プログラミングのお題スレ Part22 (857レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
747: デフォルトの名無しさん [sage] 2025/04/10(木) 00:43:03.90 ID:1pFQYAQA vectorのメモリは必要分を最初に確保すると速くならない? vectorの最初のサイズの初期値は要素10個分だったはず。11個目が追加されたら20個確保して全要素コピーんsんてやってたら遅いよ http://mevius.5ch.net/test/read.cgi/tech/1691038333/747
749: デフォルトの名無しさん [] 2025/04/10(木) 22:03:03.91 ID:Y2N8/SQw >>747 vector p[0]〜p[S]のサイズの最大値4499個(20億以下では88876個)分のメモリを for (auto &v : p) v.reserve(4499); で最初に割り付けておくと、>>743ではRustの方が2000万以下で27%、20億以下で11%速かったのが、 2000万以下では差が縮まりRustの方が14%速く、20億以下では逆転しRustの方が20%遅くなった。 サイズの最大値は実行前には分からないから、上記の改変はあくまでもvectorのサイズ拡張が実行時間に 及ぼす影響を見るためのテストで、解答として使うことはできないが。 vectorのサイズ拡張は、新しいメモリ割り付けとそこへの要素コピーに掛かる時間によってだけではなく、 要素の格納アドレスが変わることによるキャッシュ有効率の低下によっても、速度低下をもたらしそう。 >>746, 748 どっちがどれだけ速いかは実行環境に依存するとはいえ、C++が20億で数秒とかRustより約10倍遅いと いうのはいくら何でも遅すぎておかしいと思う。解の標準出力をなしにするのを忘れていたり、Windowsで コンパイル後の実行ファイルの実行時間をPowerShellでmeasure-command {a.exe}のように計測して ウィルス・チェックに要した時間も含まれていたりしない? http://mevius.5ch.net/test/read.cgi/tech/1691038333/749
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.491s*