int型別和long long型別運算執行時間的差別
有時在運算過程中,中間步驟用int型別就夠了,最終結果需要用long long,這時資料型別定義和執行時間還是有關係的。 以計算sum((i/j)*(i/j)),其中i為1~n,j為1~sqrt(n)為例。
#include <cstdio> #include <math.h> #include <ctime> #define NN 1000000 int main() { int t=clock(); long long sum=0; for(long long a=1;a<=NN;a++) for(long long b=1;b<=sqrt(NN);b++) sum+=(a/b)*(a/b); printf("%lld,%d\n",sum,clock()-t); t=clock(); sum=0; for(int a=1;a<=NN;a++) for(int b=1;b<=sqrt(NN);b++) sum+=(long long)(a/b)*(a/b); printf("%lld,%d\n",sum,clock()-t); } --- D:\>g++ test_int.cpp -O3 D:\>a 547976090417015170,8072 547976090417015170,2980
程式碼塊1比程式碼塊2用的時間多不少。
可見,雖然現在計算機的計算能力和儲存空間都比過去提升了,正確選擇型別還是重要的。
相關文章
- Java long型別和Long型別的那些事Java型別
- Long raw和Long型別總結型別
- 操作LONG型別型別
- 測試Java中的long,int基本型別Java型別
- LONG型別遷移到LOB型別(三)型別
- LONG型別遷移到LOB型別(二)型別
- LONG型別遷移到LOB型別(一)型別
- LONG型別複製型別
- long型別相關型別
- Oracle Long型別轉換為Clob型別Oracle型別
- c++ 基本資料型別(int、float、double、long、long long)最大值,最小是表示方法C++資料型別
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-LONG和LONG RAW變數SQL資料型別變數
- oracle裡long型別詳解Oracle型別
- 關於long型別的轉換型別
- oracle裡long型別的總結Oracle型別
- long型別資料的擷取型別
- Python 四種數值型別(int,long,float,complex)區別及轉換Python型別
- Date型別使用Calendar進行時間運算型別
- Spring Mvc Long型別精度丟失SpringMVC型別
- LONG欄位型別向CLOB遷移型別
- long型別轉換成varchar2型別
- Oracle 中LONG RAW BLOB CLOB型別介紹Oracle型別
- long資料型別跨平臺問題資料型別
- 靜態long型別常量serialVersionUID的作用型別UI
- 使用copy命令解決LONG型別的困擾型別
- 含LONG型別欄位的表無法MOVE型別
- Long型別的資料,利用COPY命令遷移型別
- 強制型別轉換(int)、(int&)和(int*)的區別型別
- 關於int型別數值的運算問題型別
- 時間型別和時間戳型別時間戳
- PostgreSQL:時間——型別、運算子和函式SQL型別函式
- 時間型別型別
- oracle的long型別欄位的應用-- 實戰篇Oracle型別
- oracle的long型別欄位的應用-- 知識篇Oracle型別
- Java中執行時型別識別RTTIJava型別
- 字元型別轉換成時間型別字元型別
- 透過觸發器複製包含LONG型別的表觸發器型別
- Java中long和Long有什麼區別 (轉載)Java