[英]Writing a very heavy operation in c++ for testing
這可能與大多數問題相反,但出於測試目的,我想創建一個謂詞,該謂詞使用一些非常慢的操作而不創建數據競爭 。 與順序實現相比,我需要測試並行實現,並且想要這樣做而不創建大量矢量。 我目前使用此謂詞:
[](std::size_t& v){
v = 42; //some random number...
}
但是為了看到任何實際結果,我的向量需要在大小上是龐大的,我寧願使用更小的大小和更長的謂詞執行時間...我應該編寫哪種lamba函數,這非常耗時,因此我可以測試我的實現?
只是一個想法,請強制執行多次重復的讀取-修改-寫入操作:
std::size_t volatile& vv = v;
vv = 0;
for (int i = 0; i != 100; ++i) { vv +=1; }
由於編譯器可能無法對此進行優化,因此它將涉及v
的許多實際讀取。 也就是說,您可能仍然會命中緩存。
如果也要避免這種情況,則需要std::atomic_store
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.