簡體   English   中英

如何提高性能?

[英]How to improve the performance?

我已經准備了一個有關制作軟件應用程序的項目。 它是完整的並且可以正常工作,只是執行速度非常慢。.我已經采用了幾段代碼並對它們進行了優化。

我嘗試了psyco ..即我安裝了psyco,並在代碼頂部添加了兩行

import psyco
psyco.full()

不知道這是否是使用psyco ..的方法。 請告訴我如何使用psyco ..,因為我添加了此功能,但沒有任何改善。

我已經嘗試進行性能分析,並且我知道代碼行會花費一些時間,但是這些代碼行無法進一步優化,因此是不可避免的代碼行。

我也想到了使用某些python包在'c'中重寫代碼的選項..但是我在使用其他不屬於基本python的python包中一直有非常糟糕的經驗。

我使用的是python 2.6和Windows Vista。.請告訴方法方法,以顯着提高整個代碼的執行速度..至少5倍。

我沒有用方法編寫代碼,您之間沒有什么方法..沒有main ..

是的,因為很少有人建議我是受IO約束的問題..因為我需要調用該代碼約500次,因此每次打開和關閉文件的數量至少為2。

在這里,當打開一個.pm文件時,它有兩列,我只需要前幾列,所以我將整個前幾列復制到列表中,並將其傳遞給函數以獲取其行號,然后打開其他文件以獲取該行號的元素放入列表...

這是我想要的任務...我想將第一列的元素加載到列表中會花費很多時間來糾正此問題。

如何改善IO瓶頸的性能

拼命尋求幫助

如果可以切換到二進制文件格式,則可以得到更好的性能。 您的大多數代碼都在進行解析和字符串操作。 您正在做很多將字符串轉換為浮點數的操作,這比您想象的要慢。

僅僅通過調整代碼,您不太可能看到5倍的性能差異。

首先,您應該考慮改進算法-您是否在使用最佳數據結構來完成工作? 也許在正確的位置使用dictset可以大大提高代碼的速度。

編寫C模塊並不難,如果找不到改善Python代碼的方法,這是另一種選擇。 通常,使用C代碼可以使速度提高5倍以上。

也許您的問題是IO約束。 然后,您需要研究提高IO性能的方法

如果您在這里需要更多幫助,則可能必須顯示一些代碼或至少描述程序的功能。

更新:看起來您正在打開和關閉許多文件,而這些文件在Windows上往往會非常緩慢。

可以像導入一樣簡單地使用psyco並調用psyco.full()。 所以您正確使用psyco。

如果您嘗試使用C / C ++構建python模塊,請查看boost :: python

您應該真正發布代碼以進行進一步分析。

要優化代碼以提高速度,您只需對其進行概要分析並查看問題出在哪里。 猜測無濟於事。 但是一旦知道了位置,通常最能帶來收益的是降序:改進算法,使用更合適的數據結構,消除資源瓶頸(io,內存,cpu),減少內存分配,減少上下文切換(進程和子例程)。

這是一個優化的機會:您要調用兩次get_list,它們的參數非常相似:

join_cost_index_end[index] = get_list(file, float(abs1), fout)
join_cost_index_strt[index] = get_list(file, float(abs2), fout)

這意味着get_list中的大多數工作都是無緣無故地完成了兩次。 重寫它,以便一次調用get_list,並使它同時返回index_end和index_strt。

為什么bot只嘗試使用cython? 您應該在不更改任何代碼的情況下獲得更好的性能。 稍加修改,這應該會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM