Cкорее всего я не правильно провожу тест, ибо метод от Стаса ой как без JIT Compiler`a проигрывает, подправьте код да затестите :)
На большое количество текста (2457):
PHP код:
#define PROFILING_ITERS 1_000_000
new _str_[2500],
string_to_strcar[2500];
main()
{
new time = 0;
static const fmt_str[] = "test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|tes";
static const fmt_str_1[] = "test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|tes";
static const fmt_str_2[] = "test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|tes";
static const fmt_str_3[] = "test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|tes";
static const fmt_str_4[] = "test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|tes";
static const fmt_str_5[] = "test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|\
test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test|test";
format(_str_, sizeof(_str_), "%s%s%s%s%s%s", fmt_str, fmt_str_1, fmt_str_2, fmt_str_3, fmt_str_4, fmt_str_5);
time = GetTickCount();
printf("Запускаю цикл на %d итераторов | Нативный вызов функций | С JIT-компиляцией", PROFILING_ITERS);
for(new i = 0; i < PROFILING_ITERS; i++)
{
strcat(string_to_strcar, _str_);
}
printf("Время выполнение кода: %d", GetTickCount()-time);
new dest[sizeof(_str_)];
time = GetTickCount();
printf("Запускаю цикл на %d итераторов | Метод от Стаса (Daniel_Cortez'a) | С JIT-компиляцией", PROFILING_ITERS);
for(new u = 0; u < PROFILING_ITERS; u ++)
{
for(new z = 0; (dest[z] = _str_[z]) != EOS; ++z) {}
}
printf("Время выполнение кода: %d", GetTickCount()-time);
}
PHP код:
[17:58:52] Запускаю цикл на 1000000 итераторов | Нативный вызов функций | С JIT-компиляцией
[17:58:54] Время выполнение кода: 2512
[17:58:54] Запускаю цикл на 1000000 итераторов | Метод от Стаса (Daniel_Cortez'a) | С JIT-компиляцией
[17:59:04] Время выполнение кода: 9927
А пока без JIT - компиляцией выводились логи я успел за печенкой сходить xD (Но это наверное моя ошибка)
PHP код:
[18:02:20] Запускаю цикл на 1000000 итераторов | Метод от Стаса (Daniel_Cortez'a) | Без JIT-компиляцией
[18:05:08] Время выполнение кода: 168233
[18:05:08] Number of vehicle models: 3
На маленький текст (Взял 30)
PHP код:
#define PROFILING_ITERS 1_000_000
new
string_to_strcar[30];
main()
{
new time = 0;
static const fmt_str[] = "test|test|test|test|test|test|";
time = GetTickCount();
printf("Запускаю цикл на %d итераторов | Нативный вызов функций | С JIT-компиляцией", PROFILING_ITERS);
for(new i = 0; i < PROFILING_ITERS; i++)
{
strcat(string_to_strcar, fmt_str);
}
printf("Время выполнение кода: %d", GetTickCount()-time);
new dest[sizeof(fmt_str)];
time = GetTickCount();
printf("Запускаю цикл на %d итераторов | Метод от Стаса (Daniel_Cortez'a) | С JIT-компиляцией", PROFILING_ITERS);
for(new u = 0; u < PROFILING_ITERS; u ++)
{
for(new z = 0; (dest[z] = fmt_str[z]) != EOS; ++z) {}
}
printf("Время выполнение кода: %d", GetTickCount()-time);
}
Без джита:
PHP код:
[18:09:30] Запускаю цикл на 1000000 итераторов | Нативный вызов функций | Без JIT-компиляцией
[18:09:30] Время выполнение кода: 161
[18:09:30] Запускаю цикл на 1000000 итераторов | Метод от Стаса (Daniel_Cortez'a) | Без JIT-компиляцией
[18:09:33] Время выполнение кода: 2396
[18:09:33] Number of vehicle models: 3
C джитом:
PHP код:
[18:10:24] Запускаю цикл на 1000000 итераторов | Нативный вызов функций | С JIT-компиляцией
[18:10:25] Время выполнение кода: 108
[18:10:25] Запускаю цикл на 1000000 итераторов | Метод от Стаса (Daniel_Cortez'a) | С JIT-компиляцией
[18:10:25] Время выполнение кода: 153
P.S: Разорвите меня в пух и прах, что тут не так! :)