1、数据库查询(没有对关键字段设置索引)
2、算法(复杂度大)
3、代码冗余
例如:下面的代码中可以设置全局变量,减少重复计算。
vec_sort_by_idx, datas = get_sql_keywords_and_vec()
import time
from compute_similarity import *
vec_sort_by_idx, datas = get_sql_keywords_and_vec()
class align_class:
def align_func(self, input_word):
result = []
result = compute_result(input_word, vec_sort_by_idx, datas, topk=10)
t3 = time.time()
result = choose_apposition(result)
t4 = time.time()
print('choose time is: t4-t3={}s'.format(t4-t3))
return result
def sample_api():
align_api = align_class()
start_time = time.time()
for i in range(10):
result = align_api.align_func("张三")
print(result)
end_time = time.time()
print("cost %.2f" % (end_time - start_time))
if __name__ == "__main__":
sample_api()
总结:一般,如果发现某个程序特别耗时,可以分段计算每一步消耗的时间长短,从而定位到耗时最长的代码处,检查该处是否可以优化。