標籤:編譯器 最佳化 編程 程式員 java
這篇文章獻給自己的職業——程式員 By Coder的不平凡
今天這篇文章直奔主題,今下午自己在做關於char這個類型深入理解的時候,查到資料,char在java裡面是16位,自己思維就到了2的16次方是多少? 隨性用cmd輸入calc開啟計算機,選擇程式員型(其實程式員對這個冪的計算式應該比較敏感的,自己還要不斷學習和領悟),然後始終找不到冪運算的符號,我記得以前用過這個運算啊,怎麼今兒找不到了。在計算機點了半天后,突然“呵呵”一笑,我忘記了我自己的職業——程式員。
恩,對,我是程式員,這麼小小的一個運算問題自己隨便寫一個迴圈就能算出結果。於是開啟Eclipse,寫了一個for迴圈,算出了結果。。。再得到結果的時候我突然想這是不是不太高效? 是不是可以用其他方法來把它算出來? 於是大家也知道,移位操作可以解決,於是輸出2<<15就能得到結果。得到結果的我並不滿足,我想這兩個操作到底誰的速度更快,做了一個測試,毋庸置疑,移位操作的更快,然後我腦海又想起大學裡面學的課程《電腦群組成原理》,《電腦作業系統》等等(雖然沒認真聽 - -!)【看來大學裡面學的課程不一定全都是沒用的,這一點一定要堅信!,相信自己所學的。】,於是得到了下面的思維構圖:
我記得以前做過一個測試,把移位和迴圈來比,看哪個速度更快,有時候迴圈更快,有時候移位快,從理論上,必須是移位更快啊!!!於是在網上找相關問題,看到一個人回答的問題:如果目標系統有乘法指令,硬體的乘法比自己移位實現乘法要快,如果目標系統沒有乘法指令,編譯器會用移位實現乘法,這通常比自己實現的乘法要快; 恩,對,編譯器會最佳化,你想看到效果不一定看的到。
我想這也許是程式員這個職業所給我帶來的一些思維上的改變,我想如果以後遇到類似的問題,我也應該用這種求知慾望,多從網上找到一些細節東西,來豐富論證,這樣收穫的更多吧。
所以:始終記得自己是程式員【這是多麼崇高的詞啊!!! 可不是貶義詞的 :)】 ,體會編程的樂趣。