2
對某些變量使用long long
時,Codeforces上的某些任務會導致「TLE」(超出時間限制),而將其更改爲int
會導致「已接受」。爲什麼用int提高性能取代long long?
該問題如何影響代碼?編譯器如何處理它?爲什麼使用int
時代碼更快?
對某些變量使用long long
時,Codeforces上的某些任務會導致「TLE」(超出時間限制),而將其更改爲int
會導致「已接受」。爲什麼用int提高性能取代long long?
該問題如何影響代碼?編譯器如何處理它?爲什麼使用int
時代碼更快?
這在很大程度上取決於平臺。下面舉例說明了使用long long
可能會減慢你的代碼的兩個實例:
long long
是64位和int
爲32位),然後有參與執行操作更多的工作如添加。int
更改爲long long
可能會產生很大的影響,因爲數據是兩倍大。將數據從磁盤或RAM拉到CPU緩存很昂貴,如果數據類型是兩倍大,CPU必須更頻繁地請求數據。
可以在32位系統上運行64位算術運算,但忽略時間複雜度。 O(1)表示奇妙的時間複雜性,但O(1)可能需要145億年。由於第一個算法的緩存處理不當,您可以使O(log(n))比O(n)花費更長的時間。應該更快,並不意味着更快。算法可能很棒,但是實現仍然可能很糟糕或不切實際。 – user4581301
措施。 [[[[[[[ –