簡體   English   中英

用C ++編寫非常繁重的操作以進行測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM