Era da un po’ di tempo che mi chiedevo se l’implementazione di Linq To SQL per mysql di DevArt fosse più efficiente o meno dell’alternativa di casa mysql.
Ho quindi deciso di farmi in casa un benchmark che, sebbene effettuato in modo piuttosto grossolano e rapido ha dato dei risultati abbastanza netti.
Il test è stato eseguito con le seguenti condizioni (da qui capirete che è abbastanza spartano come benchmark):
- Windows 7 64 BIT
- mysql 5.1.x 64 BIT per Windows
- .NET Framework 4.0
- Utilizzato Cassini al posto di IIS
- DevArt versione 6.30.185.0
- mysql Connector NET versione 6.4.4
In pratica ho lanciato due procedure separate con la mia macchina nelle stesse condizioni di lavoro e a distanza di pochissimo tempo, quindi applicativi aperti, musica che suona e via discorrendo
Il test era suddiviso in due componenti, l’esecuzione di 1.000 query su una tabella con campo indicizzato passandogli un valore randomico e l’inserimento di 1.000 record sempre con valori randomici.
In particolare l’inserimento prevedeva il COMMIT ad ogni STATEMENT perché altrimenti non si notava alcuna differenza di performance tra i due drivers.
Di seguito i risultati nudi e crudi:
mysql (utilizzo 27%/30% CPU poi sceso in insert a 13%/15%) 6.4.4
- Data avvio select: 30/12/2011 18:12:03
- Data fine select: 30/12/2011 18:12:31
- Data avvio insert: 30/12/2011 18:12:31
- Data fine insert: 30/12/2011 18:12:43
DevArt (utilizzo 27%/31% CPU in insert a 13%/17%) 6.30.185.0
- Data avvio select: 30/12/2011 18:13:21
- Data fine select: 30/12/2011 18:13:38
- Data avvio insert: 30/12/2011 18:13:38
- Data fine insert: 30/12/2011 18:13:44
Tempo SELECT MySQL: 28 secondi
Tempo SELECT DevArt: 17 secondi
Tempo INSERT MySQL: 12 secondi
Tempo INSERT DevArt: 6 secondi
Direi che è abbastanza chiaro che, a parte una lieve differenza nell’utilizzo della CPU (in favore del driver mysql Connector NET meno esoso), la velocità di esecuzione sia delle SELECT che delle INSERT è nettamente in favore di DevArt.
Morale, bene così, almeno non ho toppato driver per un importante progetto che sto sviluppando!