『壹』 英特爾SystemStudio2016中提供哪些新功能
支持和優化令人信服的系統和應用用法
高度優化的編譯器和庫,包括英特爾®C++編譯器、英特爾®集成性能基元庫(英特爾®IPP)以及英特爾®數學內核庫(英特爾®MKL),幫助開發人員將性能提高四倍。
分析搶占式實時Linux*上的應用性能
優於性能分析器支持實時Linux*系統解析,開發人員可迅速准確地定位搶占式Linux系統中的性能熱點。高優先順序的任務可能隨時中斷數據收集器。英特爾®VTune™Amplifier持續通過低開銷采樣收集數據。享用並發性、等待和鎖定分析,另加上下文交換信息。找出系統軟體和應用代碼中的性能熱點。
分析虛擬化環境中的應用性能
性能分析器支持虛擬化環境解析。觀察和分析客戶操作系統實例上運行的嵌入式應用的性能和行為。通過單一平台,在虛擬化環境中優化多種操作系統和應用的性能,節約硬體成本。
快速鑒別浪費功耗的軟體
功耗分析器支持Android*、Windows*,現在還支持Linux,延長運行Linux的IoT、移動和嵌入式設備的電池使用壽命,優化無風扇系統的散熱。功耗分析器精確顯示應用和系統軟體的喚醒,這些是主要功耗對象。
快速隔離復雜的系統問題
全面的系統全局硬體和軟體事件跟蹤有助於通過時間戳和糾正跟蹤信息有效地精確查找問題,分析軟硬體之間的復雜交互。
系統全局的封閉式機箱調試
通過標準的USB連接進行基於JTAG*的調試和追蹤,增加靈活性,降低成本,無需訪問JTAG埠。
將洞察力擴展到Windows* System,增強可靠性
適用於Microsoft*WinDbg* KernelDebugger的系統調試和追蹤擴展幫助簡化平台上線和Windows驅動驗證。調試完全停止的Windows系統(包括驅動),通過英特爾®處理器跟蹤,更快地中斷並隔離復雜的運行時問題。
高效調試計算密集的代碼,卸載至圖形內核
使用簡單的編譯程序指令(例如#pragma)標記計算密集的代碼,跨處理器和圖形內核協作執行。目前擴展調試器支持除了處理器內核之外,還可調試圖形內核上運行的代碼。
『貳』 MDK-arm的ARM編譯工具
ARM編譯工具鏈(之前被稱為ARM RealView編譯工具)包含:
ARM C/C++ 編譯器(armcc)
Microlib
ARM Macro匯編器(armasm)
ARM鏈接器(armLink)
ARM工具(Librarian and FromELF)
基於以上專門針對ARM架構的微控制器編譯器,工程師可以使用C或者C++編寫應用程序。通過以上編譯器的編譯,可以獲得ARM匯編語言的高效率和高速度。
ARM編譯器將C/C++元文件編譯成可重定位(Relocatable)的目標模塊,並且在其中嵌入供uVision調試器或在線調試器調試的符號信息。同時,ARM編譯器能幫助生成listing file,它可以包含symbol table(符號表)和交叉引用信息。
ARM RVCT編譯器被廣泛視為行業最佳的基於ARM架構的編譯器。它定位於最佳代碼密度的編譯器,可以幫助生成代碼量最小的編譯器,幫助節省代碼量對內存的要求從而降低硬體成本。同時,編譯器支持ISO標準的C/C++語言,可以將32-bit ARM, the 16-bit Thumb, 及混合的32/16-bit Thumb2 指令集生成經過高度優化的代碼。
ARM公司一直致力於持續改善ARM編譯器在代碼密度和代碼性能兩方面的性能,同時增添了很多新的特點,如Microlib等。
『叄』 C語言如何提高程序效率
好的代碼沒有一個統一的衡量標准,在程序員們的世界裡大家也是各自按照自己的標准衡量著自己和別人的代碼。不過有一個標准幾乎是被所有人認同的。服役時間越長、出錯率越高的代碼就是好代碼。所有的編程方法、代碼技巧甚至於設計模式都是為了達到這個目的而產生的。
程序的效率分兩部分:時間效率和空間效率。
時間效率 : 指的是程序運行的速度
空間效率 : 指的是程序佔用內存或者外存的大小
對於這兩點的把握,我們沒有明確的方法。這里給出一些能夠達成共識的規則,大家在今後自己編碼的時候,可以通過這些規則來衡量自己的代碼是否符合要求。
規則1:不要一味地追求程序的效率
如果追求程序效率需要付出降低正確性、可靠性、健壯性、可讀性等質量代價,那麼可以放棄這部分效率的提高。
規則2:優先提高全局效率
只有整個程序的執行效率提高才有意義,把時間和精力放在某一個不常被調用的小模塊優化上得不償失。
規則3:針對瓶頸部分優化
在實際開發工作中,我們經常遇到一些程序執行時間過長,需要優化。有些人上來就開始逐行檢查代碼,把認為可能影響效率的地方都盡量修改一遍。這樣做不僅浪費時間,更重要的是,常常修改一遍後依然看不到明顯的效果。
這種情況下,正確的方法是先找出限制效率的「瓶頸」,在這個部分做有針對性的優化。這么做才事半功倍。
規則4:先優化數據結構和演算法,再優化執行代碼
程序的兩大要素是演算法和數據結構,它們貫穿於程序的始終。因此,對它們的優化能夠起到意想不到的良好效果。
規則5:時間效率和空間效率的矛盾
大多數時候,時間效率和空間效率是對立的。這就是程序設計中兩個很重要的方法論,一個是「以空間換時間」,另一個是「以時間換空間」。此時應當分析那個更重要,作出適當的折中。
早間年,硬體成本比較高,人們大多都採用以時間換空間的策略,花費一些時間,減少內存開銷。如今,內存條的價格已經非常便宜了,人們注重的`是軟體的友好性,因此大部分時候都是用空間換時間。
規則6:代碼不是越短越好
很多資深程序員都會有這樣一個誤區,完成同一個功能,代碼越短越好。還經常有人說這樣的話:「就這么個功能我幾行代碼就搞定了」。其實,追求代碼精簡是一個很大的誤區。因為精簡的代碼並不一定產生高效的機器碼。同時,它還付出了可讀性這一代價。正確的做法是適當地做到代碼精簡。
注意事項
1. 書寫錯誤
經常有人把「==」誤寫成「=」。「||」、「&&」、「<=」、「>=」這類符號也很容易發生少一個的錯誤。最可怕的是編譯器根本發現不了這樣的錯誤。
2. 初始化
變數(指針、數組)被創建之後應當立刻初始化,防止把未被初始化的變數當成右值使用。
3. 數值錯誤
這也是一類非常容易忽略的錯誤。變數的初值、預設值錯誤,或精度不夠,一旦出錯不易發現。
4. 類型轉換
為了避免數據類型轉換的錯誤,我們要盡量使用顯式的數據類型轉換,避免在編譯器中執行非我們所願的隱式數據類型轉換。
5. 溢出
溢出分兩種,一種是超過數據類型取值范圍的賦值,另一種是數組下標范圍越界。這兩種都是要時刻注意的。
7. 避免編寫技巧性很高代碼
技巧性過高的代碼一定是可讀性較差的代碼,這種代碼不易維護,後期的成本較高。
8. 好代碼要復用,壞代碼要重寫
如果原有的代碼質量比較好,盡量復用它。但是不要修補很差勁的代碼。當我們遇到差勁代碼時,最好的方法是重寫新代碼替換它。
9. 盡量使用標准庫函數
對於標准庫中有的函數,我們不要再花時間自己實現。很簡單,你自己實現的一定不比庫函數效率高。
10. 把編譯器的選擇項設置為最嚴格狀態
只有最嚴格的審查自己的代碼,才能寫出優秀的軟體產品。很多人甚至連編譯過程中出現的warning都懶得處理,這種態度堅決不能有。
『肆』 單片機的編程用C語言好還是匯編語言好。為什麼
一般都用C語言編程。只有在C解決不了和代碼效率比較高的時候才會使用匯編。很明顯,C語言容易編程,更容易模塊化編程,容易學習,會的人多。編寫同一個程序,C語言所花的時間平均比匯編短很多。而且對應不同的單片機平台,匯編語言都是不同的,而C語言是通用的。
鑒於C語言有這么多好處,建議你用C語言編程,現在隨著編譯器功能的強大,如KIEL,基本上沒有C語言處理不了的單片機問題了。
現在的硬體技術的發展,硬體成本越來越低,在代碼效率不高的時候可以通過提升硬體的水平來實現系統的實時性需求。因此,在很多時候,代碼的優化工作量減少了很多。
總之,C語言編程優於匯編。C語言是硬體的語言。