Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
--desktop --gc=sgenВесь тест циклически прогонялся по 10 раз
-Xms32m -Xmx768mi++, аAtomicInteger.getAndIncrement() for (int i = 0; i < _iterationCount; ++i)
{
int x = i / 10;
}.method public hidebysig virtual instance void
Do() cil managed
{
// Code size 35 (0x23)
.maxstack 2
.locals init ([0] int32 i)
IL_0000: ldarg.0
IL_0001: call instance void DotNetPerformance.SomeTest::StartTiming()
IL_0006: ldc.i4.0
IL_0007: stloc.0
IL_0008: br.s IL_0013
IL_000a: ldloc.0
IL_000b: ldc.i4.s 10
IL_000d: div
IL_000e: pop
IL_000f: ldloc.0
IL_0010: ldc.i4.1
IL_0011: add
IL_0012: stloc.0
IL_0013: ldloc.0
IL_0014: ldarg.0
IL_0015: ldfld int32 DotNetPerformance.SomeTest::_iterationCount
IL_001a: blt.s IL_000a
IL_001c: ldarg.0
IL_001d: call instance void DotNetPerformance.SomeTest::StopTiming()
IL_0022: ret
} // end of method Div10Test::Do for (int i = 0; i < _iterationCount; ++i)
00000025 xor edx,edx
00000027 mov dword ptr [ebp-4],edx
0000002a nop
0000002b jmp 00000031
{
int x = i / 10;
0000002d nop
for (int i = 0; i < _iterationCount; ++i)
0000002e inc dword ptr [ebp-4]
00000031 mov eax,dword ptr [ebp-4]
00000034 mov edx,dword ptr [ebp-8]
00000037 cmp eax,dword ptr [edx+0Ch]
0000003a jl 0000002D
}
for (int i = 0; i < _iterationCount; ++i)
00000048 xor edx,edx
0000004a mov dword ptr [ebp-14h],edx
0000004d nop
0000004e jmp 0000006D
{
double x = System.Math.Sin(val);
00000050 fld qword ptr [ebp-8]
00000053 sub esp,8
00000056 fstp qword ptr [esp]
00000059 call 65081211
0000005e fstp st(0)
00000060 nop
val += dt;
00000061 fld qword ptr [ebp-10h]
00000064 fadd qword ptr [ebp-8]
00000067 fstp qword ptr [ebp-8]
for (int i = 0; i < _iterationCount; ++i)
0000006a inc dword ptr [ebp-14h]
0000006d mov eax,dword ptr [ebp-14h]
00000070 mov edx,dword ptr [ebp-18h]
00000073 cmp eax,dword ptr [edx+0Ch]
00000076 jl 00000050
}
.net 4.0
9,86437_op/mks_202,75_ms._2E+008_DynamicArray последовательный доступ к элементам
0,08114_op/mks_616,25_ms._5E+004_DynamicArray вставка и удаление элементов
1,34907_op/mks_741,25_ms._1E+008_LinkedList последовательный доступ к элементам
3,72648_op/mks_1341,75_ms._5E+006_LinkedList вставка и удаление элементов
51,28205_op/mks_195,00_ms._1E+007_Stack вставка и удаление элементов
9,87654_op/mks_101,25_ms._1E+006_Queue вставка и удаление элементов
2,53807_op/mks_394,00_ms._1E+006_Dictionary<int, string> вставка и удаление элементов
42,78075_op/mks_46,75_ms._2E+006_Dictionary<int, string> последовательный доступ к элементам
Java -client
1,31406_op/mks_1522,00_ms._2e+08_DynamicArray последовательный доступ к элементам
0,05938_op/mks_842,00_ms._5e+04_DynamicArray вставка и удаление элементов
0,65147_op/mks_1535,00_ms._1e+08_LinkedList последовательный доступ к элементам
4,27716_op/mks_1169,00_ms._5e+06_LinkedList вставка и удаление элементов
8,11688_op/mks_1232,00_ms._1e+07_Stack вставка и удаление элементов
2,37530_op/mks_421,00_ms._1e+06_Queue вставка и удаление элементов
3,20513_op/mks_312,00_ms._1e+06_Dictionary<int, string> вставка и удаление элементов
6,23053_op/mks_321,00_ms._2e+06_Dictionary<int, string> последовательный доступ к элементам
MaxTotalMemory: 416497112
Java -server
1,56372_op/mks_1279,00_ms._2e+08_DynamicArray последовательный доступ к элементам
0,06739_op/mks_742,00_ms._5e+04_DynamicArray вставка и удаление элементов
1,11359_op/mks_898,00_ms._1e+08_LinkedList последовательный доступ к элементам
3,52361_op/mks_1419,00_ms._5e+06_LinkedList вставка и удаление элементов
8,39631_op/mks_1191,00_ms._1e+07_Stack вставка и удаление элементов
8,06452_op/mks_124,00_ms._1e+06_Queue вставка и удаление элементов
3,14465_op/mks_318,00_ms._1e+06_Dictionary<int, string> вставка и удаление элементов
11,69591_op/mks_171,00_ms._2e+06_Dictionary<int, string> последовательный доступ к элементам
Пробовал заменить ArrayList в первых двух тестах на ArrayIntList из Apache Commons Primitives, скорость выполнения теста возрастает назначительно
Java -server
1,72861_op/mks_1157,00_ms._2e+08_DynamicArray последовательный доступ к элементам
0,06974_op/mks_717,00_ms._5e+04_DynamicArray вставка и удаление элементов
Вот как-то так.
Сравнительное тестирование производительности платформ .Net, Java и Mono