先看一个代码片段, 主要是测试std::vector的开销。
#include <chrono>
#include <vector>
#include <iostream>
#include <fstream>
#include <unistd.h>
std::vector<std::chrono::steady_clock::time_point> time_point_begin;
std::vector<std::chrono::steady_clock::time_point> time_point_end;
int main(int argc, char**argv) {
int cycle = atoi(argv[1]);
int size = atoi(argv[2]);
int interval = atoi(argv[3]);
int count = 0;
while (++count < cycle) {
time_point_begin.emplace_back(std::chrono::steady_clock::now());
{
std::vector<uint8_t> a;
std::vector<uint8_t> b;
std::vector<uint8_t> c;
std::vector<uint8_t> d;
}
time_point_end.emplace_back(std::chrono::steady_clock::now());
usleep(interval);
}
std::ofstream result_file_begin;
result_file_begin.open("begin.txt", std::ios_base::app);
for (auto item : time_point_begin) {
result_file_begin << (std::chrono::time_point_cast<std::chrono::microseconds>(item)).time_since_epoch().count() << std::endl;
}
std::ofstream result_file_end;
result_file_end.open("end.txt", std::ios_base::app);
for (auto item : time_point_end) {
result_file_end << (std::chrono::time_point_cast<std::chrono::microseconds>(item)).time_since_epoch().count() << std::endl;
}
result_file_begin.close();
result_file_end.close();
}
10000次, 间隔2ms
结果,在-O3级别的优化下,这四个vector创建及销毁的开销大约是0.194微秒
如果不加任何优化,开销大约在1.25微秒左右。