2
一部の変数にlong long
を使用した場合、Codeforcesのタスクによっては「TLE」(時間制限超過)が発生し、int
に変更すると「受け入れ済み」になります。long longをintに置き換えるとパフォーマンスが向上するのはなぜですか?
この問題はどのようにコードに影響しますか?コンパイラはどのようにそれに対処していますか? int
を使用するとコードが高速になるのはなぜですか?
一部の変数にlong long
を使用した場合、Codeforcesのタスクによっては「TLE」(時間制限超過)が発生し、int
に変更すると「受け入れ済み」になります。long longをintに置き換えるとパフォーマンスが向上するのはなぜですか?
この問題はどのようにコードに影響しますか?コンパイラはどのようにそれに対処していますか? int
を使用するとコードが高速になるのはなぜですか?
これはプラットフォームによって大きく異なります。 CPUは(long long
64ビットとint
が32ビットであると仮定して)64ビットは、その後の操作を実行する際に関与する多くの作業が存在しない場合
long long
を使用するコードを遅くすることができる場所の2つのインスタンスであります追加など。int
からlong long
に変更すると、データが2倍になるため大きな影響があります。ディスクまたはラムからCPUキャッシュにデータを引き出すのは高価です。データ型が2倍の場合、CPUはデータを頻繁に要求する必要があります。
32ビットシステムで64ビット算術演算を実行することはできますが、ここでは複雑さは無視してください。 O(1)は幻想的な時間の複雑さを意味しますが、O(1)は145億年かかる可能性があります。最初のアルゴリズムによるキャッシュ処理が正しくないため、O(log(n))がO(n)より長くかかることがあります。より速くなければならないという意味ではありません。アルゴリズムはすばらしいことがありますが、実装はまだ吸うことができないか、非実用的です。 – user4581301
小節。 [[[[[[ –