国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

評估Python中不同嵌入式算法的性能

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Mohammed Billoo ? 2022-10-19 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Python嵌入式應用程序開發中變得越來越普遍,特別是對于在網絡邊緣運行的機器學習框架。但是,這種高級通用編程語言抽象出代碼中的許多細節,這些細節可能會以開發人員可能沒有意識到的方式影響實現的性能。

讓我們舉一個明顯的例子:計算斐波那契數列。至少有兩種不同的方法可以執行此操作,遞歸算法和標準迭代算法,其性能級別差異很大。

可以使用名為跟蹤測試器的工具評估不同實現或算法的性能。這是Percepio的可視化跟蹤診斷工具,使嵌入式軟件開發人員能夠在運行時深入了解代碼,以便更輕松地調試系統級問題,并幫助他們改進軟件的設計和性能。

Tracealyzer 可以與開源 Eclipse 工具等傳統調試器并排使用,并通過系統級的幾個附加視圖補充詳細的調試器視圖。這有助于了解經典調試器不足的實時問題。

結合 Linux 操作系統發行版中的 LTTng 開源跟蹤包,跟蹤測試程序可以顯示不同級別的性能。這與處理器無關,并且是所選算法的結果。

對于評估,斐波那契數列的每個實現都在單個模塊中執行:

def recur_fibo(n):

if n <=1 n:

return n

else:

return(recur_fibo(n-1) + recur_fibo(n-2))

def non_recur_fibo(n):

result = []

a,b = 0,1

while a < n:

result.append(a)

a,b = b, a+b

return result

有單獨的Python源文件調用上面的兩個函數:

import lttngust

import logging

import fib

def example():

logging.basicConfig()

logger = logging.getLogger(‘my-logger’)

logger.info(‘Start’)

fib.recur_fibo(10)

logger.info(‘Stop’)

logger.info(‘Start’)

fib.non_recur_fibo(10)

logger.info(‘Stop’)

if __name__ == ‘__main__’:

example()

以下命令在 LTTng 中捕獲跟蹤,然后可以在跟蹤測試器中對其進行檢查:

$> lttng create

$> lttng enable-event --kernel sched_switch

$> lttng enable-event --python my-logger

$> lttng start

$> python3 .py

$> lttng stop

$> lttng destroy

pYYBAGNPW7mAPX8uAAblgiUV8WQ354.png

將標準的 Python 記錄器替換為稱為“我的記錄器”,允許跟蹤測試程序在工具的跟蹤視圖中顯示事件。由于 Tracealyzer 在此特定示例中未捕獲任何應用程序數據,因此無需將軟件配置為讀取數據值。相反,所需要的只是一個自定義間隔,用于標記兩個函數的進入和退出。

雖然在上面的跟蹤視圖中可以看到巨大的性能差異,但 Tracealyzer 還可以提供更多有形的性能指標。這可以通過轉到視圖并單擊“間隔”和“狀態機”來完成,并使用代碼中隨 logger.info()調用一起插入的“開始”和“停止”字符串創建自定義間隔,這些字符串標記候選函數的進入和退出。

62827ea71d36c-05_16_2022+Billoo+%232.png

區間圖顯示遞歸算法(首先執行)和迭代算法(第二次執行)之間存在 20 倍的差異。

在這個例子中,我們用每個算法只計算10個斐波那契數列。如果沒有 Tracealyzer,可能需要進行更多的迭代才能獲得一些有意義的見解,但由于兩個原因,這是有問題的。首先,當將遞歸斐波那契算法運行到1000(甚至100)時,Python將簡單地坐在那里。這將是令人擔憂的,因為不清楚這種無響應是由于實現中的錯誤還是其他原因造成的。在這種情況下,我們可能可以猜測為什么會發生這種情況,但是對于更復雜的問題,需要大量的日志記錄才能了解瓶頸的位置。

其次,如果嵌入式系統上運行多個應用程序,則這些其他應用程序可能會破壞目標應用程序,這也會增加算法或函數完成執行的時間。沒有痕跡,就沒有簡單的方法來找出是否是這種情況。

相反,Python和跟蹤測試器中LTTng的組合突出了所選擇算法的基本特征才是問題所在。在開發更復雜的算法時,這是非常寶貴的。此示例實現可作為有關如何評估未來算法實現性能的參考。一般來說,在單獨的Python模塊中實現核心功能是良好的編程實踐,這也簡化了特定功能的跟蹤。

由于跟蹤開銷幾乎可以忽略不計,因此跟蹤點可以保留在應用程序中,因為它在目標嵌入式系統上甚至在生產中進行測試,從而允許 Tracealyzer 工具在生產代碼庫中生成性能指標。這對于常規系統測試非常有用,并且允許使用相同的代碼庫來確保應用程序在功能上正確且性能良好,只需進行最少的更改。

結論

使用跟蹤測試程序和 LTTng 在 Python 應用程序中捕獲性能指標,可以對算法的實現進行寶貴的分析。

這種方法的開銷最小,這意味著可以保留代碼的檢測,以便在目標嵌入式系統上使用。這樣可以對目標應用程序進行更多監視,并增強與其他應用程序和操作系統的交互分析。例如,可能有另一個進程或線程搶占目標應用程序并影響性能。跟蹤測試程序和 LTTng 的組合可以識別此類異常的原因,這使開發人員能夠優化實現以防止進一步的問題。

雖然斐波那契數列的示例實現相對無害,但它突出了Python語言的一個關鍵特征,可以為開發更復雜的實現提供信息。

此示例還顯示了在設計中使用單獨模塊的價值。使用 trace,開發人員可以在擴展到完整的系統實現之前,在這些模塊中測量和驗證關鍵核心功能的性能,而不會產生顯著的開銷。這有助于證明應用程序在功能上是正確的,并且在目標環境中進行最小的更改時性能良好。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5198

    文章

    20449

    瀏覽量

    334061
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90032
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM32開發的五大嵌入式系統

    :FreeRTOS是開源的,可以免費獲取并在商業項目中使用,降低了項目的開發成本。 2.小巧高效:FreeRTOS的內核非常小巧,僅需幾KB的內存空間,適用于資源受限的嵌入式系統,并且具有高效的任務調度算法
    發表于 01-21 10:48

    什么是嵌入式應用開發?

    、實現和部署,還包括硬件選擇、軟件設計、測試、集成和維護等流程?。 定義和背景 嵌入式應用開發是指將軟件部署到嵌入式系統,這些系統廣泛應用于消費電子和工業自動化。
    發表于 01-12 16:13

    OPTIGA? Trust Adapter:嵌入式安全解決方案評估利器

    OPTIGA? Trust Adapter:嵌入式安全解決方案評估利器 在嵌入式系統設計,安全問題一直是工程師們關注的焦點。為了方便對OPTIGA?
    的頭像 發表于 12-19 11:50 ?336次閱讀

    CW32嵌入式軟件開發的必備知識

    嵌入式系統中最常用的編程語言,因為它們提供了直接訪問硬件的能力,并且代碼執行效率高。 了解匯編語言,用于編寫底層驅動、中斷處理程序以及性能要求極高的代碼段。 對其他編程語言如Python、Java等有
    發表于 11-28 07:48

    C語言在嵌入式開發的應用

    C 語言在汽車電子控制系統開發的主導地位。 2、設備驅動程序 設備驅動程序是嵌入式系統連接硬件和軟件的橋梁,它負責實現嵌入式系統與外部設備之間的通信和控制。C 語言由于其對底
    發表于 11-21 08:09

    嵌入式與FPGA的區別

    分為算法和控制,而算法的工資會比控制高,因為技術含量比控制高得多,但算法適合高數比較好的人學。 ?最后在了解下入行門檻? ?1、嵌入式系統的門檻比較低,不管是
    發表于 11-20 07:12

    嵌入式和FPGA的區別

    、光傳輸) 高性能計算(算法加速) 原型驗證(ASIC前期驗證) 軍事航天(抗輻射、高可靠需求) 未來發展趨勢 隨著技術的融合,我們看到嵌入式處理器與FPGA結合的SoC器件(如Xilinx
    發表于 11-19 06:55

    2025年最佳的嵌入式編程語言有哪些呢?

    嵌入式系統是現代科技不可或缺的一部分。它們存在于家用電器、汽車、住宅、醫院、商店等各個領域。它們與我們的社會緊密相連。選擇合適的語言來構建嵌入式系統對于成功至關重要。那么,2025年最佳的嵌入式編程
    的頭像 發表于 11-14 10:27 ?1418次閱讀
    2025年最佳的<b class='flag-5'>嵌入式</b>編程語言有哪些呢?

    Microchip SAMA7G54-EK評估套件:為高性能嵌入式系統打造的全功能平臺

    功耗嵌入式微處理器 (MPU),運行頻率高達1GHz。該套件由主流Linux發行版、裸機軟件框架和RTOS提供支持。這樣即可輕松開始開發。該套件包括板載嵌入式調試器,無需外部工具即可進行編程或調試。
    的頭像 發表于 10-13 16:38 ?907次閱讀
    Microchip SAMA7G54-EK<b class='flag-5'>評估</b>套件:為高<b class='flag-5'>性能</b><b class='flag-5'>嵌入式</b>系統打造的全功能平臺

    嵌入式達到什么水平才能就業?

    工具定位問題具備嵌入式軟件模塊化設計能力:能按功能劃分代碼模塊,編寫規范的頭文件與源文件,實現模塊間低耦合調用會使用Git 進行版本管理:能提交代碼、解決沖突、回滾版本,熟悉敏捷開發流程需求拆解與任務分配邏輯
    發表于 09-15 10:20

    是德示波器MSOX3052T在嵌入式系統的應用

    在現代電子系統設計嵌入式系統已成為智能設備與物聯網的核心。面對日益復雜的硬件架構與軟件算法,調試工具的性能直接決定了產品開發周期與最終可靠性。是德科技(Keysight)推出的MS
    的頭像 發表于 08-27 17:38 ?679次閱讀
    是德示波器MSOX3052T在<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>中</b>的應用

    盤點嵌入式就業所需要的技能有哪些?

    ,把握未來的職業機遇。 1.智能汽車行業: - 熟悉嵌入式編程語言,如C/C++、Python等。 - 掌握嵌入式系統設計與開發流程,了解汽車電子控制系統的基本原理。 - 具備良好的數據結構和
    發表于 08-11 15:43

    Linux嵌入式和單片機嵌入式的區別?

    :成本較低,適合預算有限的項目。 Linux嵌入式 :成本較高,適合對功能和性能有較高要求的項目。 8. 社區和支持 : 單片機嵌入式 :社區和支持相對較小,但也有一些專業的論壇和資源
    發表于 06-20 09:46

    嵌入式開發入門指南:從零開始學習嵌入式

    特定功能的計算機系統,廣泛應用于智能家居、工業控制、醫療設備、車載系統等領域。 2. 學習嵌入式開發的前置知識熟悉C語言編程掌握基本的數據結構與算法了解數字電路與微控制器原理熟悉Linux操作系統
    發表于 05-15 09:29

    Python嵌入式系統的應用場景

    你想把你的職業生涯提升到一個新的水平?Python嵌入式系統中正在成為一股不可缺少的新力量。盡管傳統上嵌入式開發更多地依賴于C和C++語言,Python的優勢在于其簡潔的語法、豐富的
    的頭像 發表于 03-19 14:10 ?1497次閱讀