Панды разделяются между , получая и настройку (т.е. меняя) методов. Поскольку настройка изменяет ваш исходный фрейм данных, Pandas хочет быть более осторожным в том, как вы это делаете. loc
это официальный способ сделать это. Синтаксис, подобный election[too_close].winner
, является просто ярлыком (или «сахаром») для получения , но не позволяет установить .
Переместите свои функции вычисления времени снаружи for () { .. }
оператор затем делит общее время выполнения на количество операций в Вашем тестовом шлейфе.
#include <iostream>
#include <ctime>
#define NUMBER 10000 // the number of operations
// get the difference between start and end time and devide by
// the number of operations
double diffclock(clock_t clock1, clock_t clock2)
{
double diffticks = clock1 - clock2;
double diffms = (diffticks) / (CLOCKS_PER_SEC / NUMBER);
return diffms;
}
int main() {
// start a timer here
clock_t begin = clock();
// execute your functions several times (at least 10'000)
for (int i = 0; i < NUMBER; i++) {
// a very fast function in the middle
func()
}
// stop timer here
clock_t end = clock();
// display results here
cout << "Execution time: " << diffclock(end, begin) << " ms." << endl;
return 0;
}
Примечание: станд.:: часы () испытывают недостаток в достаточной точности профилирования. Ссылка.
Несколько указателей:
Посмотрите вопрос, который я спросил о том же самом: по-видимому, clock()
разрешение, как гарантируют, не будет так высоко.
C++ получая время миллисекунд на Linux - часы (), кажется, не работает правильно
Попробовать gettimeofday
функция или повышение
При необходимости в более высоком разрешении единственным способом пойти является зависимый платформы.
В Windows проверьте API QueryPerformanceCounter/QueryPerformanceFrequency.
На Linux ищите clock_gettime ().
При необходимости в независимости от платформы, необходимо использовать что-то как ACE_High_Res_Timer (http://www.dre.vanderbilt.edu/Doxygen/5.6.8/html/ace/a00244.html)
Вы могли бы хотеть изучить использование openMp.
#include <omp.h>
int main(int argc, char* argv[])
{
double start = omp_get_wtime();
// code to be checked
double end = omp_get_wtime();
double result = end - start;
return 0;
}