作業要求參見:
要求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 = {} #要求2:通過 profile 找出程式的瓶頸。給出程式執行中最花費時間的3個函式(或**片斷)。要求包括截圖。在命令列輸入:計算頻數
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) #
按照頻數排序
python -m cprofile -s cumulative wf.py war_and_peace.txt該命令可以顯示出程式中每個函式呼叫的次數以及執行時間,並按時間長短進行排序。
執行截圖如下,紅框中為耗時最長的三個函式:
要求3:根據瓶頸,"盡力而為"地優化程式效能。
重點:使用python的collection模組,及其提供的資料型別counter計數器用於計數,廢除原有的for迴圈和判斷語句。
修改**部分:
def要求4:再次 profile,給出在 要求1 中的最花費時間的3個函式此時的花費。要求包括截圖。優化後,三個函式縮排到一秒鐘之內。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)
執行截圖:
要求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 ...