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

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

There are separate Python source files that call the two functions above:

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()

The following commands capture a trace in LTTng that can then be examined in Tracealyzer:

$》 lttng create

$》 lttng enable-event --kernel sched_switch

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

$》 lttng start

$》 python3 .py

$》 lttng stop

$》 lttng destroy

poYBAGLCV56ANDAHAARarNZx8ew762.png

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

雖然在上面的跟蹤視圖中可以看到顯著的性能差異,但 Tracealyzer 還可以提供更具體的性能指標。這可以通過轉到視圖并單擊間隔和狀態機并使用代碼中的 logger.info() 調用插入并標記條目和候選函數的退出。

pYYBAGLCV6WATkeQAABUEXGg624196.png

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

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

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

相反,Python 中的 LTTng 和 Tracealyzer 的結合突出表明,問題在于所選算法的基本特征。這在開發更復雜的算法時非常寶貴。此示例實現可作為如何評估未來算法實現的性能的參考。在單獨的 Python 模塊中實現核心功能通常是一種很好的編程習慣,這也簡化了對特定功能的跟蹤。

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

結論

使用 Tracealyzer 和 LTTng 捕獲 Python 應用程序中的性能指標提供了對算法實現的寶貴分析。

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

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

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

審核編輯:郭婷

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

    關注

    5198

    文章

    20449

    瀏覽量

    334114
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM32開發的五大嵌入式系統

    受限的嵌入式環境運行,能夠RAM和ROM資源較少的情況下運行,適用于各種嵌入式設備。 3.支持實時性需求:uClinux提供了實時性支持,能夠滿足對任務響應時間有嚴格要求的應用場景
    發表于 01-21 10:48

    什么是嵌入式應用開發?

    概述 所謂的嵌入式應用開發就是嵌入式操作系統下進行開發、軟硬件綜合開發 ?嵌入式應用開發?是指在嵌入式操作系統下進行開發,包括系統化設計
    發表于 01-12 16:13

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

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

    C語言單元測試嵌入式軟件開發的作用及專業工具的應用

    語言使用率超過90%。從智能家居溫控系統到汽車ECU控制單元,從工業機器人到醫療設備,C語言仍然是嵌入式開發的首選語言。 C語言嵌入式開發的核心優勢包括: ?高效
    發表于 12-18 11:46

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

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

    C語言嵌入式開發的應用

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

    嵌入式與FPGA的區別

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

    嵌入式和FPGA的區別

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

    嵌入式電力儀表配電系統的應用與選型

    現代配電系統,對電力參數的精確測量、電能計量以及設備運行狀態的可靠監控,是保障供電安全、實現能效管理的基礎。各類嵌入式電力儀表作為關鍵測量元件,廣泛應用于進線柜、出線柜等場景,為系統運行提供數據
    的頭像 發表于 09-26 09:37 ?639次閱讀
    <b class='flag-5'>嵌入式</b>電力儀表<b class='flag-5'>在</b>配電系統<b class='flag-5'>中</b>的應用與選型

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

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

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

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

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

    Linux嵌入式與單片機嵌入式多個方面存在顯著的區別,以下是詳細的比較和歸納: 一、基本概念 1. Linux嵌入式: 定義:將Linux操作系統運行在
    發表于 06-20 09:46

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

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

    Python嵌入式系統的應用場景

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

    泰克MDO32示波器嵌入式系統調試的關鍵技術分析

    性能的混合域示波器,嵌入式系統調試中發揮著關鍵作用。本文將深入分析泰克MDO32示波器嵌入式系統調試
    的頭像 發表于 03-19 13:51 ?904次閱讀
    泰克MDO32示波器<b class='flag-5'>在</b><b class='flag-5'>嵌入式</b>系統調試<b class='flag-5'>中</b>的關鍵技術分析