在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Mohammed Billoo ? 2022-07-04 10:59 ? 次閱讀

Python嵌入式應(yīng)用程序開發(fā)中變得越來越普遍,特別是對于在網(wǎng)絡(luò)邊緣運行的機器學(xué)習(xí)框架。但是,這種高級通用編程語言抽象出代碼中的許多細節(jié),這些細節(jié)可能會以開發(fā)人員可能不知道的方式影響實現(xiàn)的性能。

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

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

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

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

對于評估,斐波那契數(shù)列的每個實現(xiàn)都在一個模塊中執(zhí)行:

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 在此特定示例中未捕獲任何應(yīng)用程序數(shù)據(jù),因此無需將軟件配置為讀取數(shù)據(jù)值。相反,只需要一個自定義間隔來標記兩個函數(shù)的進入和退出。

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

pYYBAGLCV6WATkeQAABUEXGg624196.png

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

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

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

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

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

結(jié)論

使用 Tracealyzer 和 LTTng 捕獲 Python 應(yīng)用程序中的性能指標提供了對算法實現(xiàn)的寶貴分析。

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

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

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

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5088

    文章

    19160

    瀏覽量

    306546
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4802

    瀏覽量

    84890
收藏 人收藏

    評論

    相關(guān)推薦

    如何提高嵌入式代碼質(zhì)量?

    的錯誤和改進點,提高代碼的可讀性和健壯性。 4. 版本控制:使用版本控制系統(tǒng)如Git,可以追蹤代碼變更并輕松進行團隊協(xié)作,確保每個版本都是可控和可重現(xiàn)的。 優(yōu)化性能和資源利用率 嵌入式系統(tǒng)
    發(fā)表于 01-15 10:48

    MPU嵌入式系統(tǒng)的應(yīng)用

    一、MPU的基本功能 微處理器單元(MPU)是嵌入式系統(tǒng)的大腦,負責(zé)執(zhí)行程序指令、處理數(shù)據(jù)和控制其他硬件設(shè)備。MPU的基本功能包括: 指令執(zhí)行:MPU能夠從存儲器讀取指令,解碼這些指令,并執(zhí)行
    的頭像 發(fā)表于 01-08 09:26 ?159次閱讀

    mmc卡在嵌入式系統(tǒng)的使用

    隨著科技的發(fā)展,嵌入式系統(tǒng)我們的日常生活扮演著越來越重要的角色。從智能手機到家用電器,再到工業(yè)控制系統(tǒng),嵌入式系統(tǒng)無處不在。存儲設(shè)備作為嵌入式
    的頭像 發(fā)表于 11-25 09:58 ?322次閱讀

    什么是嵌入式?一文讀懂嵌入式主板

    現(xiàn)代科技浪潮嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運行的核心力量。那么,究竟什么是嵌入式嵌入式系統(tǒng),顧名思義,是將計算機的硬件和軟件
    的頭像 發(fā)表于 10-16 10:14 ?1294次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計算機硬件,其設(shè)計旨在嵌入特定設(shè)備執(zhí)行專門任務(wù)。嵌入式主板如同是設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?694次閱讀

    嵌入式系統(tǒng)的實時操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運行、相互交互和與外界通信的底層軟件機制。本節(jié),您將了解嵌入式軟件開發(fā)人員使用哪些流行RTOS以及它們運行
    的頭像 發(fā)表于 08-20 11:28 ?517次閱讀

    聚徽-嵌入式工控機性能方面有什么優(yōu)勢

    嵌入式工控機,亦被稱為 Box 整機或 Embedded Industrial Computer,是專為工業(yè)現(xiàn)場環(huán)境打造的緊湊型計算機。與普通工控機相比,嵌入式工控機展現(xiàn)出了獨特的優(yōu)勢,尤其商品
    的頭像 發(fā)表于 08-13 09:25 ?358次閱讀

    機器視覺嵌入式的應(yīng)用

    機器視覺嵌入式系統(tǒng)的應(yīng)用是一個廣泛而深入的話題,涉及到許多不同的領(lǐng)域和技術(shù)。 機器視覺嵌入式系統(tǒng)
    的頭像 發(fā)表于 07-16 10:30 ?565次閱讀

    深度學(xué)習(xí)算法嵌入式平臺上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法各個領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源受限的嵌入式平臺上,仍然是一個具有挑戰(zhàn)性的任務(wù)。本文將從
    的頭像 發(fā)表于 07-15 10:03 ?1582次閱讀

    嵌入式工控主板智慧醫(yī)療診斷設(shè)備的應(yīng)用

    嵌入式工控主板智慧醫(yī)療診斷設(shè)備的應(yīng)用廣泛且深入,其高集成度、低功耗、高性能等特點使得它成為現(xiàn)代醫(yī)療設(shè)備不可或缺的一部分。以下是對
    的頭像 發(fā)表于 07-11 10:51 ?458次閱讀
    <b class='flag-5'>嵌入式</b>工控主板<b class='flag-5'>在</b>智慧醫(yī)療診斷設(shè)備<b class='flag-5'>中</b>的應(yīng)用

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術(shù)集成到嵌入式系統(tǒng)的一種解決方案。嵌入式系統(tǒng)是一種為特定應(yīng)用而設(shè)計的計算機系統(tǒng),它通常包括處理器、內(nèi)存、外設(shè)接口等組件,并且被
    的頭像 發(fā)表于 03-15 14:29 ?1310次閱讀

    定制嵌入式主板,需要考慮的功能有哪些?

    隨著科技的不斷發(fā)展和進步,嵌入式系統(tǒng)各行各業(yè)得到了廣泛的應(yīng)用。嵌入式主板作為嵌入式系統(tǒng)的核心組件,起著至關(guān)重要的作用。
    的頭像 發(fā)表于 02-29 17:38 ?546次閱讀
    定制<b class='flag-5'>嵌入式</b>主板,需要考慮的功能有哪些?

    嵌入式人工智能的就業(yè)方向有哪些?

    嵌入式人工智能的就業(yè)方向有哪些? 新一輪科技革命與產(chǎn)業(yè)變革的時代背景下,嵌入式人工智能成為國家新型基礎(chǔ)建設(shè)與傳統(tǒng)產(chǎn)業(yè)升級的核心驅(qū)動力。同時在此背景驅(qū)動下,眾多名企也紛紛
    發(fā)表于 02-26 10:17

    嵌入式工控機性能特點 嵌入式工控機應(yīng)用場景

    嵌入式工控機性能特點 嵌入式工控機應(yīng)用場景 嵌入式工控機是一種專門設(shè)計用于工業(yè)控制系統(tǒng)的計算機設(shè)備。它具有與傳統(tǒng)計算機不同的性能特點,并且
    的頭像 發(fā)表于 02-04 11:35 ?730次閱讀

    嵌入式學(xué)習(xí)步驟

    硬件組件。 (4).開發(fā)固件:編寫嵌入式系統(tǒng)的固件,這是嵌入式系統(tǒng)的軟件部分。固件負責(zé)控制硬件并執(zhí)行特定任務(wù)。 (5).調(diào)試和測試:嵌入式系統(tǒng)部署到實際環(huán)境
    發(fā)表于 02-02 15:24
    主站蜘蛛池模板: 色多多影视| 2018天天拍拍拍免费视频| aa国产| 国内自拍2021| 在线视频免费视频网站| 性欧美xxxx性| 狠狠色综合色综合网络| 成年人看的黄色| 3344成年在线视频免费播放男男| 亚洲乱码一二三四区| 欧美激情啪啪| 亚洲一区三区| rrr523亚洲国产片| 亚洲视频免费一区| 亚洲综合春色另类久久| 国产精品高清免费网站| 亚州一级毛片| 一区二区三区高清视频在线观看 | 欧美综合精品一区二区三区| 五月天丁香婷| 亚洲色妞| 亚洲综合啪啪| 日日噜噜夜夜狠狠va视频| 浓厚な接吻と肉体の交在线观看| 国产综合精品久久亚洲| 夜夜嗷| 国产精品美女久久久久网站| 亚洲视频1| 性高清| 开心六月婷婷| 国产一级特黄一级毛片| 黄色在线免费看| 国模吧在线视频| 偷自在线| 能直接看黄的网站| 一本到卡二卡三卡免费高| 奇米视频在线观看| a理论片| 国产精品莉莉欧美自在线线| 免费播放一区二区三区| 中文字幕一精品亚洲无线一区|