python - 哪种方法更快?
问题描述
考虑以下类:
class SpeedAPI:
def __init__(self):
self.data = 1
def execute_method(self):
return True
和
from speed_api import SpeedAPI
class MyAPI:
def __init__(self):
self.data = 1
def my_execute_method(self):
SpeedAPI().execute_method()
我想测试每个类中每个方法的执行速度。为此,我设计了以下测试:
from speed_api import SpeedAPI
from myapi import MyAPI
import time
import threading
def test_speed_for_SpeedAPI():
time_trials_SpeedAPI = 0
for i in range(10000):
start_time = time.time()
SpeedAPI().execute_method()
end_time = time.time()
calculated_time = (end_time - start_time)
time_trials_SpeedAPI += calculated_time
averaged_time = (time_trials_SpeedAPI / 10000)
print(averaged_time)
def test_speed_for_MyAPI():
time_trials_MyAPI = 0
for i in range(10000):
start_time = time.time()
MyAPI().my_execute_method()
end_time = time.time()
calculated_time = (end_time - start_time)
time_trials_MyAPI += calculated_time
averaged_time = (time_trials_MyAPI / 10000)
print(averaged_time)
threads = [threading.Thread(target=test_speed_for_SpeedAPI), threading.Thread(target=test_speed_for_MyAPI)]
print('Testing speed for SpeedAPI')
threads[0].start()
threads[0].join()
print('Testing speed for MyAPI')
threads[1].start()
threads[1].join()
但是,在运行了一些测试之后,我注意到存在不一致之处。有时MyAPI
比 快SpeedAPI
。最终我希望更快SpeedAPI
。我期望这个是错的吗?我确实意识到两者之间的执行时间差异非常小。但是我仍然有兴趣知道哪个更快以及为什么。
以下是一些样本测试结果:
Testing speed for SpeedAPI
5.976438522338867e-07
Testing speed for MyAPI
8.997201919555664e-07
Testing speed for SpeedAPI
4.0011405944824217e-07
Testing speed for MyAPI
8.000850677490234e-07
Testing speed for SpeedAPI
4.0068626403808596e-07
Testing speed for MyAPI
9.995698928833008e-07
Testing speed for SpeedAPI
5.038022994995118e-07
Testing speed for MyAPI
1.0046958923339845e-06
很明显,最后一次试验显示不一致。这可能是什么原因?这可能与我运行每个测试的速度有关吗?我手动运行它,并一遍又一遍地通过执行脚本向终端发送垃圾邮件。感谢所有提前回复的人。
解决方案
推荐阅读
- php - Cake PHP 2 模型与查找器查询的关联
- python - how to replace XML values with values from a list
- node.js - MongoError:拓扑被破坏,NODEJS
- python - 容器以非零退出代码 143 退出。被外部信号杀死
- python - 如何使用 Python 将一系列重复的数据行转换为多条记录的列?
- java - JMSCMQ0001:WebSphere MQ 调用失败,compcode '2' ('MQCC_FAILED') 原因 '2009' ('MQRC_CONNECTION_BROKEN')
- c++ - 代码使用向量成功运行,但使用数组显示错误
- c++ - 为什么我可以将变量存储在不是其最小对齐倍数的地址?
- python - 如何在 Jupyter Notebook 中运行 GitHub 代码?
- java - 如何在 jaxb XJC 生成期间重命名 xs:simpleType?