Guarda che non è assolutamente vero... anzi, il ByRef è leggerissimissimamente più lento: infatti quando passi un oggetto ByVal ad una funzione tu in realtà stai passando un puntatore a tale oggetto (che è fisicamente allocato nell'heap), per cui che tu lo passi per valore (creando una copia del puntatore sullo stack - consumo di memoria: 4 byte) o che tu lo passi per riferimento (creando un puntatore che punta al puntatore all'oggetto, identico consumo di memoria) la differenza di impiego di memoria è nulla. Dico che il ByRef è leggerissimissimamente più lento perché per accedere all'oggetto stesso è necessario dereferenziare due puntatori al posto di uno; inoltre semanticamente è più corretto che l'oggetto da ottenere venga restituito come valore di ritorno.Originariamente inviato da simon78_soft
Per le performance non saprei risponderti, la differenza credo sia talmente piccola che proprio non so quale potrebbe essere piu' veloce...
Ti posso pero' dire questo:
- con "(byref ds as dataset)" passi un oggetto esistente
- con "private fuction ottieniDataSet() as dataset" crei un nuovo oggetto e quinid utilizzi sicuramente piu' risorse
Quindi, io personalmente ti consiglio di utilizzare "byref"... ma e' solo il mio parere personale...
In ogni caso le tue considerazioni risultano corrette se parliamo di strutture (Struct), che vengono allocate sullo stack e non sull'heap.

Rispondi quotando