среда, 27 июня 2012 г.

Бенчмарк списков в C# и Java

Чисто по приколу провёл сравнительный супер "бенчмарк" массивов и листов в C# и Java.

Время в C# засекал StopWatch'ем, в Java — System.currentTimeMillis().
Число элементов: 10000000

C#
 


IntArray: 38
ObjList:   1239
IntList:  161

Java


IntArray: 8
ObjList:  1440
IntList:  1161


Не знаю, почему C# так тупит в банальном заполнении массива числами, но вот то что генерики в джаве подкачали - думаю, очевидно. Скорость автоупаковки в действии. Хотя шарпу удалось обогнать и при упаковке.



Но ещё интересно, почему в Java generic и object листы выдают разные результаты, ведь на выходе должен быть один и тот же код. Хотя, может там есть дополнительная оптимизация для параметризованных классов.

Примечательно так же, что компиляция C# в Release код не привела к хоть как-либо значимому ускорению, хотя я ожидал. Видимо, я заблуждаюсь на этот счёт.


Хорошего дня!