Поместите его в цикл for
, чтобы сделать каждую вещь 1 000 000 раз, чтобы получить более реалистичное число. И только запустите таймер непосредственно перед кодом, который вы на самом деле хотите проверить, а затем запишите конечное время сразу (т. Е. Не запускайте таймер перед session_start()
.
Также убедитесь, что код идентичен
Как выполняется сценарий (cronjob, php из командной строки, Apache и т. д.) не должны иметь значения, поскольку вы являетесь только время относительное различие между скоростью различных функций.Таким образом, это соотношение должно оставаться неизменным.
Если на компьютере, на котором вы используете эталон, есть много других вещей, это может повлиять на бенчмарк результаты, если произойдет скачок в использовании процессора или памяти из другого приложения во время работы вашего теста. Но пока у вас много ресурсов, чтобы сэкономить на компьютере, я не думаю, что это будет проблемой.
Текущая спецификация JNI явно заявляет, что создание нескольких виртуальных машин в одном процессе не поддерживается , и это фактически утверждается в исходном коде HotSpot .
Даже если ваша dll вызывает JNI_CreateJavaVM
только один раз, это не означает, что это самый первый вызов в течение всего процесса. Фактически, JNI_CreateJavaVM
сначала вызывается java.exe
или другой пусковой установкой вашей IDE (idea.exe
, eclipse.exe
, netbeans.exe
и т. Д.).
Поэтому вместо того, чтобы создавать Java VM вслепую , A.dll
должен проверить сначала, если JVM уже существует в текущем процессе, вызвав JNI_GetCreatedJavaVMs . Если функция возвращает непустой массив, используйте GetEnv или AttachCurrentThread , чтобы получить JNIEnv*
для существующей виртуальной машины, иначе создайте новую виртуальную машину.
jni_GetCreatedJavaVMs = (GetCreatedJavaVMs) GetProcAddress(GetModuleHandle( TEXT("jvm.dll")), "JNI_GetCreatedJavaVMs");
, и я забыл проверить, был лиjni_GetCreatedJavaVMs
NULL перед вызовомjni_GetCreatedJavaVMs(NULL, 0, &nVMs);
– Martin Rindarøy 9 March 2016 в 11:07JNI_GetCreatedJavaVMs()
не возвращал JVM. Трудно понять, о чем идет речь, или о предполагаемом решении, – user207421 7 October 2016 в 09:50