我正在撰寫一個輸出二進制的程式,我得到了很多我想輸出到終端的程式,但這需要時間。在我的程式中我想快速輸出我使用的字串的其他地方
_putchar_nolock
對于浮點數和十進制數,我使用
printf
目前我的代碼看起來像這樣用于輸出二進制數
for (size_t i = 0; i < arraysize; i )
{
std::cout << (std::bitset<8>(binarynumbers[i]));
}
輸出給出了一個不錯的 0 和 1,這是我想要的,沒有十六進制。問題是當我運行性能基準和測驗時,我發現 std::cout 明顯慢于 _putchar_nolock 和 printf。
在網上看,我找不到在 bitset 上使用 printf 并讓它輸出 0 和 1 的方法。并且 _putchar_nolock 看起來就像必須進行所有資料轉換一樣慢。
有誰知道在 C 中輸出位集的快速有效的方法?我的程式是單執行緒且簡單的,所以我沒有問題將不安全的代碼放在那里,性能是代碼中的一個大問題。
謝謝你的幫助。
uj5u.com熱心網友回復:
問題是 cin 和 cout 嘗試將自己與庫的 stdio 緩沖區同步。這就是為什么它們通常很慢,您可以關閉此同步,這將使 cout 通常更快。
std::ios_base::sync_with_stdio(false);//use this line
您還可以使用 to_string() 函式從位集中獲取 std::string。然后,您可以根據需要使用 printf。
uj5u.com熱心網友回復:
我想洗掉評論沒有足夠的代表。您可以使用bitset 類的to_string成員。這可能應該作業:
std::cout << std::bitset<8>(binarynumbers[i]).to_string();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/404907.html
標籤:
