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

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,開發人員可以在擴展到完整的系統實現之前,在這些模塊中測量和驗證關鍵核心功能的性能,而不會產生顯著的開銷。這有助于證明應用程序在功能上是正確的,并且在目標環境中進行最小的更改時性能良好。

審核編輯:郭婷

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

    關注

    5088

    文章

    19160

    瀏覽量

    306555
  • python
    +關注

    關注

    56

    文章

    4802

    瀏覽量

    84890
收藏 人收藏

    評論

    相關推薦

    如何提高嵌入式代碼質量?

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

    什么是嵌入式人工智能

    嵌入式人工智能是指將人工智能技術應用于嵌入式系統的一種技術。嵌入式系統是嵌入到其他設備或系統
    的頭像 發表于 12-11 09:23 ?359次閱讀
    什么是<b class='flag-5'>嵌入式</b>人工智能

    mmc卡在嵌入式系統的使用

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

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

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

    AMD 面向嵌入式系統推出高能效 EPYC 嵌入式 8004 系列

    AMD 憑借其 EPYC? 嵌入式處理器不斷樹立行業標準,為網絡、存儲和工業應用提供卓越的性能、效率、連接與創新。今天,我們正以第四代 AMD EPYC 嵌入式 8004 系列處理器擴展這一
    發表于 10-11 13:58 ?739次閱讀

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

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

    嵌入式系統的實時操作系統

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

    機器視覺在嵌入式的應用

    機器視覺在嵌入式系統的應用是一個廣泛而深入的話題,涉及到許多不同的領域和技術。 機器視覺在嵌入式系統的應用 1. 引言 機器視覺是一種模擬人類視覺系統的功能,通過圖像采集、處理和分
    的頭像 發表于 07-16 10:30 ?565次閱讀

    深度學習算法嵌入式平臺上的部署

    隨著人工智能技術的飛速發展,深度學習算法在各個領域的應用日益廣泛。然而,將深度學習算法部署到資源受限的嵌入式平臺上,仍然是一個具有挑戰性的任務。本文將從嵌入式平臺的特點、深度學習
    的頭像 發表于 07-15 10:03 ?1582次閱讀

    嵌入式fpga是什么意思

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

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

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

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

    操作系統使用及C高級編程 數據結構與算法 二:嵌入式Linux應用工程師,Linux網絡開發工程師 文件IO 并發程序設計 項目實戰:基于Linux的Flappybird游戲開發 網絡編程開發及實戰上
    發表于 02-26 10:17

    嵌入式軟件開發應該掌握哪些知識?

    嵌入式軟件開發應該掌握哪些知識? 一、 什么是嵌入式軟件? 嵌入式軟件通常是指嵌入式系統運行的軟件,
    發表于 02-19 11:23

    嵌入式工控機性能特點 嵌入式工控機應用場景

    嵌入式工控機性能特點 嵌入式工控機應用場景 嵌入式工控機是一種專門設計用于工業控制系統的計算機設備。它具有與傳統計算機不同的性能特點,并且在
    的頭像 發表于 02-04 11:35 ?731次閱讀

    嵌入式學習步驟

    語言編寫。但是,有些嵌入式系統也使用其他編程語言,例如Python或Java。 (3).了解硬件:深入了解您要控制的硬件設備的功能和特性。您需要了解嵌入式系統的處理器、內存、I/O端口、傳感器和其他
    發表于 02-02 15:24
    主站蜘蛛池模板: 日本视频一区二区| 美女被猛男躁免费视频网站 | tube 69sex 第一次| 午夜激情福利网| 天天操天天曰| 国产小视频在线看| 国产hs免费高清在线观看| 亚洲精品成人a| 在线天堂bt种子| 性香港xxxxx免费视频播放| 四虎sihu新版影院亚洲精品| 人与牲动交bbbbxxxx| 久久aa毛片免费播放嗯啊| 成人精品一区二区不卡视频 | 影音先锋午夜资源网站| 精品视频一二三区| 亚洲一级毛片免费在线观看| 男男h全肉耽污| 一级毛片一级毛片一级毛片aa| 婷婷五月情| 免费看黄色一级毛片| 欧美性天天影院| 日韩在线一区视频| 九九九精品| 伊在线视频| 福利影院在线| 李老汉和小花的性生生活| 五月激情婷婷丁香| 久久夜色tv网站免费影院| a级黄视频| 久操视频在线观看免费| 久久草在线视频播放| 中文字幕一区二区三区5566| 中文字幕日本一区波多野不卡| 伊人久久大香线蕉综合影| 色多多影视| 国产成人黄网址在线视频| 狼人狠狠干| 老师你好滑下面好湿h| 日韩大胆| 美女视频黄a全部|