- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的程序来测量一个函数花费了多少时间。
#include
#include
#include
struct Foo
{
void addSample(uint64_t s)
{
}
};
void test(const std::vector& samples)
{
uint32_t onlyCallTime = 0;
uint32_t loopOnlyTime = 0;
Foo stats;
std::chrono::high_resolution_clock::time_point callStart,callEnd;
auto start = callStart = callEnd = std::chrono::high_resolution_clock::now();
for(auto &s : samples)
{
callStart = std::chrono::high_resolution_clock::now();
loopOnlyTime += std::chrono::duration_cast(callStart-callEnd).count();
stats.addSample(s);
callEnd = std::chrono::high_resolution_clock::now();
onlyCallTime += std::chrono::duration_cast(callEnd-callStart).count();
}
auto end = std::chrono::high_resolution_clock::now();
std::cout << "overall duration: " << std::chrono::duration_cast(end-start).count() << std::endl;
std::cout << "only call duration: " << onlyCallTime << std::endl;
std::cout << "only loop duration: " << loopOnlyTime << std::endl;
}
int chính()
{
std::vector dataSetDecreasing;
for(uint32_t i = 0; i < 1000000; ++i)
dataSetDecreasing.push_back(1000000-i);
test(dataSetDecreasing);
}
输出真的很困惑。这里有些例子:
overall duration: 56047
only call duration: 195
only loop duration: 285
overall duration: 40984
only call duration: 177
only loop duration: 243
overall duration: 47328
only call duration: 187
only loop duration: 177
我怎么看是
callEnd-callStart
捕获对
addSample
的调用+
duration_cast
.
callStart-callEnd
捕获其他所有内容,因此循环初始化、迭代、条件和第二个
duration_cast
.我错过了什么?其他 ~40000 微秒去哪里了?
g++ -Wall -Wextra -std=c++17 -O3
g++ (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1)
我的操作系统是 Fedora 版本 32(三十二)
1 Câu trả lời
1 000 000 次迭代大约需要 50 000 微秒。平均每次迭代不到 1μs, std::chrono::duration_cast
将在小于 1μs 的任何时间舍入到 0 .这意味着您的循环只计算由于某种原因(调度、页面错误、缓存可能)花费比平均时间更长的迭代。
由于每次测量都有一个与所测量的持续时间(加上其他误差)无关的基本误差,因此进行多次小测量并将它们相加将比一次测量整个持续时间精确得多。
关于c++ - 简单 for 循环中的大量时间损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63799127/
Tôi đang cố gắng đạt được mục đích sau, giả sử tôi có chuỗi: ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ) ) ) ) Tôi muốn viết một biểu thức chính quy
Đã cho: 1 2 3 4 5 6
Thật khó để biết nên hỏi gì ở đây. Câu hỏi này mơ hồ, không đầy đủ, quá rộng hoặc mang tính tu từ và không thể trả lời hợp lý theo hình thức hiện tại. Để được trợ giúp làm rõ vấn đề này để có thể mở lại, hãy truy cập trung tâm trợ giúp. Đóng 1
Xin chào mọi người, tôi là Kasong. Svelte đã tồn tại trong một thời gian dài và tôi luôn muốn viết một bài phân tích nguyên tắc dễ hiểu. Sau khi trì hoãn quá lâu, cuối cùng tôi đã viết nó. Bài viết này sẽ tập trung vào sơ đồ luồng và hai bản demo. Cách đọc đúng là mở bài viết này trên máy tính của bạn và làm theo sơ đồ luồng và bản demo.
Thẻ căn cước có 15 hoặc 18 chữ số. 15 chữ số đều là số, 17 chữ số đầu tiên trong 18 chữ số là số và chữ số cuối cùng là số hoặc chữ in hoa "X". Biểu thức chính quy khớp với: ?
Chúng ta hãy bắt đầu với cái đơn giản nhất, cửa sổ đăng nhập của trang web; nhưng trước khi bắt đầu, hãy tải xuống plugin jquery. Tôi đã quen sử dụng vs2008 để tạo trang web, vì vậy đây là cách dễ nhất để thêm một trang trống trước. . . Chèn đầu tiên <
1. Công cụ kiểm tra ứng suất của MySQL Mysqlslap mysqlslap là một công cụ đánh giá chuẩn đi kèm với MySQL. Công cụ này truy vấn dữ liệu với cú pháp đơn giản, linh hoạt và dễ sử dụng. Công cụ này có thể mô phỏng nhiều máy khách gửi yêu cầu đồng thời đến máy chủ.
Lời nói đầu Hôm nay Dayao sẽ chia sẻ với các bạn một công cụ tạo tài liệu cơ sở dữ liệu (từ điển) mã nguồn mở .NET (Giấy phép MIT), miễn phí, đơn giản và thiết thực, hỗ trợ CHM, Word, Excel, PDF, Html, XML, Markdown, v.v.
Cú pháp của ngôn ngữ Go tương tự như ngôn ngữ C, do đó những người quen thuộc với ngôn ngữ C và các ngôn ngữ phái sinh của nó (C++, C#, Objective-C, v.v.) sẽ nhanh chóng làm quen với ngôn ngữ này. Một số cú pháp của ngôn ngữ C sẽ làm giảm khả năng đọc của mã hoặc thậm chí gây ra sự mơ hồ. Ngôn ngữ Go dựa trên ngôn ngữ C
Tôi đang chuyển đổi mkv sang mp4 nhanh chóng bằng lệnh ffmpeg ffmpeg -i test.mkv -vcodec copy -acodec copy new.mp4 nhưng nó không hoạt động với bất kỳ tệp mkv nào, khi
Tôi muốn đếm số lượng trang tính trong sổ làm việc của mình rồi trừ một trang tính cụ thể khỏi tổng số. Tôi đang bỏ lỡ điều gì? Điều này cho tôi một lỗi đối tượng: wsCount = ThisWorkbook.Sheets.Count - ThisWorkbook
Tôi có một tệp perl để kiểm tra xem có ini nào tồn tại trong một thư mục hay không. Nếu có, nó sẽ đọc từ đó, nếu không, nó sẽ tạo một mẫu dựa trên mẫu mà tôi đã tạo cho nó. Tôi đang sử dụng Config::Simple trong phần ini. Câu hỏi của tôi là, nếu
Đang cố gắng để một ViewController giao tiếp với một ViewController khác thông qua thông báo Cocoa chuẩn. Viết một trường hợp thử nghiệm đơn giản. Trong VC ban đầu của tôi, tôi đã thêm nội dung sau vào viewDirect
Tôi đang vẽ sơ đồ độ cao hiển thị độ cao tăng/giảm dọc theo một đường đi, tương tự như sau: Sơ đồ độ cao mẫu với các nhãn được đặt bằng tay http://img38.image
Xin chào, vậy điều tôi cần làm cuối cùng là có thể hiển thị xen kẽ regStart và regPage dựa trên các sự kiện nhấp chuột, tôi không quá lo lắng về việc viết hàm JavaScript, nhưng ngay từ đầu tôi không thể ẩn regPage của mình được. Đây là mã của tôi. Giữ cho nó đơn giản
Tôi có một chương trình rất đơn giản để đo thời gian thực hiện một hàm. #include #include #include struct Foo { void addSample(uint64_t s)
Tôi cần tạo một chương trình chuyển đổi C# BitConverter đơn giản sang JavaScript. Tôi đã tạo một lớp BitConverter đơn giản BitConverter{ constructor(){} GetBy
Đã đóng. Vấn đề này không thể tái hiện hoặc do lỗi đánh máy. Hiện tại không chấp nhận câu trả lời. Sự cố này xảy ra do lỗi đánh máy hoặc một vấn đề không thể tái hiện được nữa. Mặc dù những câu hỏi tương tự có thể nằm trong chủ đề
Tôi mới biết đến Simple.Data. Nhưng tôi đang gặp khó khăn trong việc tìm cách thực hiện "Nhóm theo". Điều tôi muốn rất cơ bản. Bảng trông như thế này: +_______+ | cards | +_______+ | id |
Hiện tại tôi đang phát triển một JS UDF có vẻ như tuân theo mã hóa. Thông thường, vì số vòng lặp là 2 nên thông báo Alert Msg sẽ xuất hiện hai lần. Điều tôi muốn là ngay cả khi số vòng lặp là 3, thì thông báo Alert Msg sẽ chỉ xuất hiện một lần. Bất kỳ ý tưởng nào
Tôi là một lập trình viên xuất sắc, rất giỏi!