18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

評(píng)估Python中不同嵌入式算法的性能

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

對(duì)于評(píng)估,斐波那契數(shù)列的每個(gè)實(shí)現(xiàn)都在單個(gè)模塊中執(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

有單獨(dú)的Python源文件調(diào)用上面的兩個(gè)函數(shù):

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 中捕獲跟蹤,然后可以在跟蹤測(cè)試器中對(duì)其進(jìn)行檢查:

$> lttng create

$> lttng enable-event --kernel sched_switch

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

$> lttng start

$> python3 .py

$> lttng stop

$> lttng destroy

pYYBAGNPW7mAPX8uAAblgiUV8WQ354.png

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

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

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

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

在這個(gè)例子中,我們用每個(gè)算法只計(jì)算10個(gè)斐波那契數(shù)列。如果沒有 Tracealyzer,可能需要進(jìn)行更多的迭代才能獲得一些有意義的見解,但由于兩個(gè)原因,這是有問題的。首先,當(dāng)將遞歸斐波那契算法運(yùn)行到1000(甚至100)時(shí),Python將簡(jiǎn)單地坐在那里。這將是令人擔(dān)憂的,因?yàn)椴磺宄@種無響應(yīng)是由于實(shí)現(xiàn)中的錯(cuò)誤還是其他原因造成的。在這種情況下,我們可能可以猜測(cè)為什么會(huì)發(fā)生這種情況,但是對(duì)于更復(fù)雜的問題,需要大量的日志記錄才能了解瓶頸的位置。

其次,如果嵌入式系統(tǒng)上運(yùn)行多個(gè)應(yīng)用程序,則這些其他應(yīng)用程序可能會(huì)破壞目標(biāo)應(yīng)用程序,這也會(huì)增加算法或函數(shù)完成執(zhí)行的時(shí)間。沒有痕跡,就沒有簡(jiǎn)單的方法來找出是否是這種情況。

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

由于跟蹤開銷幾乎可以忽略不計(jì),因此跟蹤點(diǎn)可以保留在應(yīng)用程序中,因?yàn)樗谀繕?biāo)嵌入式系統(tǒng)上甚至在生產(chǎn)中進(jìn)行測(cè)試,從而允許 Tracealyzer 工具在生產(chǎn)代碼庫(kù)中生成性能指標(biāo)。這對(duì)于常規(guī)系統(tǒng)測(cè)試非常有用,并且允許使用相同的代碼庫(kù)來確保應(yīng)用程序在功能上正確且性能良好,只需進(jìn)行最少的更改。

結(jié)論

使用跟蹤測(cè)試程序和 LTTng 在 Python 應(yīng)用程序中捕獲性能指標(biāo),可以對(duì)算法的實(shí)現(xiàn)進(jìn)行寶貴的分析。

這種方法的開銷最小,這意味著可以保留代碼的檢測(cè),以便在目標(biāo)嵌入式系統(tǒng)上使用。這樣可以對(duì)目標(biāo)應(yīng)用程序進(jìn)行更多監(jiān)視,并增強(qiáng)與其他應(yīng)用程序和操作系統(tǒng)的交互分析。例如,可能有另一個(gè)進(jìn)程或線程搶占目標(biāo)應(yīng)用程序并影響性能。跟蹤測(cè)試程序和 LTTng 的組合可以識(shí)別此類異常的原因,這使開發(fā)人員能夠優(yōu)化實(shí)現(xiàn)以防止進(jìn)一步的問題。

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

此示例還顯示了在設(shè)計(jì)中使用單獨(dú)模塊的價(jià)值。使用 trace,開發(fā)人員可以在擴(kuò)展到完整的系統(tǒng)實(shí)現(xiàn)之前,在這些模塊中測(cè)量和驗(yàn)證關(guān)鍵核心功能的性能,而不會(huì)產(chǎn)生顯著的開銷。這有助于證明應(yīng)用程序在功能上是正確的,并且在目標(biāo)環(huán)境中進(jìn)行最小的更改時(shí)性能良好。

審核編輯:郭婷

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

    關(guān)注

    5177

    文章

    20003

    瀏覽量

    325514
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4849

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Microchip SAMA7G54-EK評(píng)估套件:為高性能嵌入式系統(tǒng)打造的全功能平臺(tái)

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

    嵌入式達(dá)到什么水平才能就業(yè)?

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

    是德示波器MSOX3052T在嵌入式系統(tǒng)的應(yīng)用

    在現(xiàn)代電子系統(tǒng)設(shè)計(jì),嵌入式系統(tǒng)已成為智能設(shè)備與物聯(lián)網(wǎng)的核心。面對(duì)日益復(fù)雜的硬件架構(gòu)與軟件算法,調(diào)試工具的性能直接決定了產(chǎn)品開發(fā)周期與最終可靠性。是德科技(Keysight)推出的MS
    的頭像 發(fā)表于 08-27 17:38 ?367次閱讀
    是德示波器MSOX3052T在<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>中</b>的應(yīng)用

    盤點(diǎn)嵌入式就業(yè)所需要的技能有哪些?

    ,把握未來的職業(yè)機(jī)遇。 1.智能汽車行業(yè): - 熟悉嵌入式編程語(yǔ)言,如C/C++、Python等。 - 掌握嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)流程,了解汽車電子控制系統(tǒng)的基本原理。 - 具備良好的數(shù)據(jù)結(jié)構(gòu)和
    發(fā)表于 08-11 15:43

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    :成本較低,適合預(yù)算有限的項(xiàng)目。 Linux嵌入式 :成本較高,適合對(duì)功能和性能有較高要求的項(xiàng)目。 8. 社區(qū)和支持 : 單片機(jī)嵌入式 :社區(qū)和支持相對(duì)較小,但也有一些專業(yè)的論壇和資源
    發(fā)表于 06-20 09:46

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    特定功能的計(jì)算機(jī)系統(tǒng),廣泛應(yīng)用于智能家居、工業(yè)控制、醫(yī)療設(shè)備、車載系統(tǒng)等領(lǐng)域。 2. 學(xué)習(xí)嵌入式開發(fā)的前置知識(shí)熟悉C語(yǔ)言編程掌握基本的數(shù)據(jù)結(jié)構(gòu)與算法了解數(shù)字電路與微控制器原理熟悉Linux操作系統(tǒng)
    發(fā)表于 05-15 09:29

    Python嵌入式系統(tǒng)的應(yīng)用場(chǎng)景

    你想把你的職業(yè)生涯提升到一個(gè)新的水平?Python嵌入式系統(tǒng)中正在成為一股不可缺少的新力量。盡管傳統(tǒng)上嵌入式開發(fā)更多地依賴于C和C++語(yǔ)言,Python的優(yōu)勢(shì)在于其簡(jiǎn)潔的語(yǔ)法、豐富的
    的頭像 發(fā)表于 03-19 14:10 ?1035次閱讀

    嵌入式系統(tǒng)的代碼優(yōu)化與壓縮技術(shù)

    在當(dāng)今數(shù)字化時(shí)代,嵌入式系統(tǒng)廣泛應(yīng)用于各個(gè)領(lǐng)域,從智能家居設(shè)備到工業(yè)控制系統(tǒng),從汽車電子到可穿戴設(shè)備,它們無處不在。而在嵌入式系統(tǒng)開發(fā),代碼優(yōu)化與壓縮技術(shù)至關(guān)重要,直接影響著系統(tǒng)的性能
    發(fā)表于 02-26 15:00

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

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

    嵌入式主板的概述與發(fā)展

    隨著科技的迅猛發(fā)展,嵌入式系統(tǒng)在現(xiàn)代電子產(chǎn)品扮演著越來越重要的角色。嵌入式主板作為嵌入式系統(tǒng)的核心組件之一,承擔(dān)著控制、處理和通訊等多種功能。本文將對(duì)
    的頭像 發(fā)表于 01-13 16:30 ?1022次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發(fā)展

    新手怎么學(xué)嵌入式?

    基本的概念。嵌入式系統(tǒng)是一種將計(jì)算機(jī)技術(shù)嵌入到特定設(shè)備的系統(tǒng),它通常具有特定的功能和有限的資源。你需要學(xué)習(xí)一些計(jì)算機(jī)基礎(chǔ)知識(shí),如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)組成原理等。這些知識(shí)將幫助你理解嵌入
    發(fā)表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指將人工智能技術(shù)應(yīng)用于嵌入式系統(tǒng)的一種技術(shù)。嵌入式系統(tǒng)是嵌入到其他設(shè)備或系統(tǒng)
    的頭像 發(fā)表于 12-11 09:23 ?1346次閱讀
    什么是<b class='flag-5'>嵌入式</b>人工智能

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

    。多媒體卡(MultiMediaCard,簡(jiǎn)稱MMC)作為一種小型、高性能、低成本的存儲(chǔ)解決方案,被廣泛應(yīng)用于嵌入式系統(tǒng)。 1. MMC卡的工作原理 MMC卡是一種基于閃存技術(shù)的存儲(chǔ)卡,最初由西門子和東芝共同開發(fā)。它遵循SD卡
    的頭像 發(fā)表于 11-25 09:58 ?1564次閱讀

    嵌入式和人工智能究竟是什么關(guān)系?

    與人工智能的結(jié)合,無疑是科技發(fā)展的一場(chǎng)革命。在人工智能硬件加速嵌入式系統(tǒng)以其獨(dú)特的優(yōu)勢(shì)和重要性,發(fā)揮著不可或缺的作用。通過深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)等算法,
    發(fā)表于 11-14 16:39

    嵌入式系統(tǒng)的連接器選擇

    嵌入式系統(tǒng),連接器的選擇是一個(gè)至關(guān)重要的環(huán)節(jié),它關(guān)系到系統(tǒng)的穩(wěn)定性、可靠性和數(shù)據(jù)傳輸效率。以下是對(duì)嵌入式系統(tǒng)連接器選擇的分析: 一、連接器類型 板對(duì)板連接器 : 用于
    的頭像 發(fā)表于 11-07 09:44 ?1061次閱讀