整数から std::string への変換コードのパフォーマンスを上回る人はいますか?
問題:
効率的な変換std::string への整数の入力は、さまざまなメソッドの作成のきっかけとなった課題です。この記事では、さまざまなアプローチを検討し、そのパフォーマンスを比較するための投稿を募集しています。
方法:
一般的な方法は次のとおりです。
-
「C 方法」: を使用するstringstream.
-
sprintf: パフォーマンスのために推奨されることがよくあります。
-
Boost の lexical_cast: stringstream に依存しない独自の実装があります。
>-
ベンのアルゴリズム:デスクトップと組み込みシステムの両方に最適化されています。
-
ltoa (非標準): 広く利用可能ですが、使用は制限される場合があります。
ルール:
提出物は特定の事項に従う必要がありますガイドライン:
- 符号付きおよび符号なし 32 ビット整数を 10 進数に変換します。
- 出力を std::string として生成します。
- スレッドとシグナルとの互換性を確保します。 .
- ASCII 文字を想定しますset.
- 2 の補数マシンで INT_MIN を正しく処理します。
- 出力は、stringstream を使用して正規の C バージョンと同一である必要があります。
- VC 2010 および g でコンパイルおよび実行します。 .
結果:
優勝した提出物は大幅なパフォーマンスの向上を示しました:
- Eugene Smith のコード: sprintf より 8 倍高速オングラム(http://ideone.com/0uhhX)
- Timo のコード: Visual C の sprintf より 15 倍高速 (http://ideone.com/VpKO3)
以上がこの整数から文字列への変換コードを上回るパフォーマンスを発揮できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。