konto usunięte

Temat: F# Operatory

Ucząc się F# stworzyłem sobie małą pomoc którą używam do testów wydajnościowych (gdyż na tym etapie interesuje mnie wydajność tego języka)


/// Measures time taken to execute a function
let (%%%) func p =
let time = new System.Diagnostics.Stopwatch();
time.Start();
let result = func p;
time.Stop();
time.ElapsedMilliseconds;


w F# wszystko jest funkcją więc i operatory także, co sprawia że pozwala to nam na dokonanie całkiem niesamowitych rzeczy.

Oto wywołanie naszego operatora.



//a function that returns int.
let sum (a, b, c) = a + b + c
printfn "%A" ((%%%) sum (2,3,4))

//a function that returns unit (void)
let display text = printfn "Display:::%s" text
printfn "%A" ((%%%) display "Hello There")



a tak wygląda w C# jeśli to kogoś interesuje :-)



[CompilationArgumentCounts(new int[] { 1, 1 })]
public static long op_PercentPercentPercent<a, b>
(FSharpFunc<a, b> func, a p)
{
Stopwatch time = new Stopwatch();
time.Start();
b result = func.Invoke(p);
time.Stop();
return time.ElapsedMilliseconds;
}

konto usunięte

Temat: F# Operatory

Bartosz Adamczewski:
Ucząc się F# stworzyłem sobie małą pomoc którą używam do testów wydajnościowych

Ale też warto pamiętać o zaletach interactive console:
let sum (a, b, c)
= a + b + c
#time
sum (13,14,15)

i fajny output łącznie z GC:
Real: 00:00:00.000, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0

Następna dyskusja:

operatory liniowe




Wyślij zaproszenie do