20190919 3 效能分析

2022-08-31 20:21:22 字數 2370 閱讀 7678

作業要求參見:

要求0:以 戰爭與和平 作為輸入檔案,重讀向由檔案系統讀入。連續三次執行,給出每次消耗時間、cpu引數。

上週未完成功能四,這周繼續努力實現功能四,但仍未實現。此次作業使用韓昊同學上週詞頻統計**進行較能分析和優化。

第一次執行截圖:

第二次執行截圖:

第三次執行截圖:

次數時間(s)

12.494

21.855

31.754

平均2.034

cpu引數:intel(r) core(tm) i7-3770 cpu @ 3.40ghz 3.40ghz

要求1:給出你猜測程式的瓶頸。

猜測:**中計算單詞頻數部分使用了for迴圈和判斷語句,猜測此處花費時間較長。

**片段:

dir_a = {}  #

計算頻數

for str1 in

list1:

if str1 != '':

if str1 in

dir_a.keys():

dir_a[str1] = dir_a[str1] + 1

else

: dir_a[str1] = 1dir_b = sorted((dir_a).items(), key=lambda x: x[1], reverse=true) #

按照頻數排序

要求2:通過 profile 找出程式的瓶頸。給出程式執行中最花費時間的3個函式(或**片斷)。要求包括截圖。在命令列輸入:

python -m cprofile -s cumulative wf.py war_and_peace.txt
該命令可以顯示出程式中每個函式呼叫的次數以及執行時間,並按時間長短進行排序。

執行截圖如下,紅框中為耗時最長的三個函式:

要求3:根據瓶頸,"盡力而為"地優化程式效能。

重點:使用python的collection模組,及其提供的資料型別counter計數器用於計數,廢除原有的for迴圈和判斷語句。

修改**部分:

def

countnumber(text, flag):

text = text.replace('

\r', '

').replace('

', '

').replace('

.', '

').replace('

,', '

').replace('

"', '')

text =deal_redundantwords(text)

list1 = text.replace('

\n', '

').lower().split() #

儲存原始資料

list2 = list(set(list1)) #

去重之後的資料

if (flag ==0):

print("

total

" + str(len(list2))) #

小文字統計詞彙量(功能1不輸出words)

else

:

print("

total

" + str(len(list2)) + "

words

") #

統計詞彙量

print("\n"

) text =collections.counter(list2)

dir_b = text.most_common(10)

要求4:再次 profile,給出在 要求1 中的最花費時間的3個函式此時的花費。要求包括截圖。優化後,三個函式縮排到一秒鐘之內。

執行截圖:

要求5:程式執行時間。

mysql 效能分析 Mysql效能分析

優化mysql資料庫效能的十個引數 1 max connections 允許的同時客戶的數量。增加該值增加 mysqld 要求的檔案描述符的數量。這個數字應該增加,否則,你將經常看到 too many connections 錯誤。預設數值是100,我把它改為1024 2 record buffer...

mysql效能分析方法 mysql 效能分析方法

1.explain分析法 explain 分析查詢語句 1 id列數字越大越先執行,如果說數字一樣大,那麼就從上往下依次執行 2 select type查詢型別 primary dependent subquery等 3 table表名 4 type 從上到下效能依次下降 system 表中只有一行...

mysql 效能分析 mysql效能分析工具

一 expalin 在sql語句之前加上explain關鍵字就可以獲取這條sql語句執行的計畫 那麼返回的這些欄位是什麼呢?我們先關心一下比較重要的幾個字段 1.select type 查詢型別 1 簡單查詢,沒有union和子查詢 2 priamry 主查詢,有union或子查詢的最外層查詢 3 ...