Часть синхронизации высокого разрешения Вашего кода

Панды разделяются между , получая и настройку (т.е. меняя) методов. Поскольку настройка изменяет ваш исходный фрейм данных, Pandas хочет быть более осторожным в том, как вы это делаете. loc это официальный способ сделать это. Синтаксис, подобный election[too_close].winner, является просто ярлыком (или «сахаром») для получения , но не позволяет установить .

7
задан Community 23 May 2017 в 12:20
поделиться

6 ответов

Переместите свои функции вычисления времени снаружи 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;
}

Примечание: станд.:: часы () испытывают недостаток в достаточной точности профилирования. Ссылка.

6
ответ дан 6 December 2019 в 11:53
поделиться

Несколько указателей:

  1. Я был бы осторожен с оптимизатором, он мог бы бросить весь Ваш код, если я буду думать, что он ничего не делает.
  2. Вы могли бы хотеть выполнить цикл 100000 раз.
  3. Прежде, чем сделать общее время calc хранят текущее время в переменной.
  4. Запускайте свою программу несколько раз.
3
ответ дан 6 December 2019 в 11:53
поделиться

Посмотрите вопрос, который я спросил о том же самом: по-видимому, clock()разрешение, как гарантируют, не будет так высоко.

C++ получая время миллисекунд на Linux - часы (), кажется, не работает правильно

Попробовать gettimeofday функция или повышение

2
ответ дан 6 December 2019 в 11:53
поделиться

При необходимости в более высоком разрешении единственным способом пойти является зависимый платформы.

В Windows проверьте API QueryPerformanceCounter/QueryPerformanceFrequency.

На Linux ищите clock_gettime ().

3
ответ дан 6 December 2019 в 11:53
поделиться

При необходимости в независимости от платформы, необходимо использовать что-то как ACE_High_Res_Timer (http://www.dre.vanderbilt.edu/Doxygen/5.6.8/html/ace/a00244.html)

2
ответ дан 6 December 2019 в 11:53
поделиться

Вы могли бы хотеть изучить использование 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;
}
1
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: