Per "routine" intendi anche un ciclo for?Originariamente inviato da Stoicenko
Allora provo a darti una spiegazione..
Il framework .net ha una particolarità cioè quello di trasformare il codice in un linguaggio intermedio.. questo linguaggio è interpretato ppoi dalla macchina virtuale del .net.. Questo codice intermedio però ha il pregio di riutilizzare le routines utilizzate più volte così da risparmiarsi il tempo di reinterpretare il codice ogni volta.. quindi un ciclo risulaterà sensibilmente più veloce in c#..
Il pinvoke invece è ovviamente più lento perchè utilizza chiamate a dll esterne..
Ovviamente è una spiegazione sommaria.. per avere più informazioni controlla sul MSDN
Per quanto riguarda il Pinvoke, ho provato sia a fare una sola chiamata alla dll esterna che fa tutto il ciclo, oppure a diminuire di cento volte le iterazioni nella dll e fare 100 chiamate.
Il tempo è sostanzialmente lo stesso. Sembra che le chiamate in quanto tali non facciano perdere tempo, ma è proprio il fatto di eseguire codice "esterno".
Giuseppe