20.02.2017, 14:49
PHP код:
new somearray[512];
native memset_plugin(array[], value, size = sizeof(array));
main()
{
new tick = GetTickCount();
for(new x; x < 10000000; x++)
{
fill_array(somearray, -1, sizeof somearray);
}
printf("fill_array: %d ms", GetTickCount() - tick);
tick = GetTickCount();
for(new x; x < 10000000; x++)
{
for(new i; i < sizeof somearray; i++)
{
somearray[i] = -1;
}
}
printf("loop: %d ms", GetTickCount() - tick);
tick = GetTickCount();
for(new x; x < 10000000; x++)
{
memset(somearray, 0);
}
printf("memset: %d ms", GetTickCount() - tick);
tick = GetTickCount();
for(new x; x < 10000000; x++)
{
memset_plugin(somearray, 0);
}
printf("memset_plugin: %d ms", GetTickCount() - tick);
}
с JIT:
fill_array: 1585 ms
memset: 940 ms
memset (c++, std::fill): 3507 ms
ну а если использовать чисто чтобы нулями залить то можно и memset
memset (c++, memset): 907 ms
без JIT:
fill_array: 5524 ms
memset: 11118 ms
memset (c++, std::fill): 5264 ms
memset (c++, memset): 1345 ms
Linux:
с JIT:
fill_array: 2401 ms
memset: 940 ms
memset (c++, std::fill): 4165 ms
memset (c++, memset): 924 ms
без JIT:
fill_array: 8607 ms
memset: 13200 ms
memset (c++, std::fill): 5372 ms
memset (c++, memset): 992 ms