queue
の実装をpython list
とし、もう1つをpython queue abstract data type
とした動作を比較するための実験を設計するためのポインタを探しています。ベンチマークここで編集:Pythonでの2つのキュー実装のベンチマーク比較を行うための実験の設計と実装方法
私はamortized testing
###############################################################
# Experiment to determine the differences between a list #
# implemented queue and the 'queue' ADT (abstract data type)#
###############################################################
from pythonds import Queue
import time
class MyQueue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
q = Queue()
# Steps:
# 1) Enter 10 to five items in both 'MyQueue' and 'Queue'
# 2) This should be done from instance of the various classes
# 3) Check the number of steps that it takes to remove items from
# these object instances.
m = MyQueue()
t1 = time.time()
for i in range(1, 100001):
m.enqueue(i)
t2 = time.time()
exec_time = t2 - t1
# m.dequeue()
t3 = time.time()
for u in range(1, 100001):
q.enqueue(u)
t4 = time.time()
exec_time2 = t4 - t3
t5 = time.time()
if not q.isEmpty():
while q.items:
q.dequeue()
t6 = time.time()
exec_time3 = t6 - t5
t7 = time.time()
if not m.items:
while m.items:
m.dequeue()
t8 = time.time()
exec_time4 = t8 - t7
print("")
print("----------------------")
print("Enqueue Operations")
print("----------------------")
print("MyQueue Result 1: ", exec_time)
print("Python Queue Result 2: ", exec_time2)
print("----------------------")
print("Dequeue Operations")
print("----------------------")
print("MyQueue Result 1: ", exec_time3)
print("Python Queue Result 2: ", exec_time4)
結果に理解する方法に基づいて置くことができ、いくつかのコードです:あなたはそれぞれの実行時間を測定するためのPython time.time()を使用することができ
----------------------
Enqueue Operations
----------------------
MyQueue Result 1: 3.1316871643066406
Python Queue Result 2: 3.1880860328674316
----------------------
Dequeue Operations
----------------------
MyQueue Result 1: 0.028588533401489258
Python Queue Result 2: 9.5367431640625e-07
実行時間を比較することができますそれは**測定したいものを**に依存?時間の複雑さ?実際のCPU使用率ですか?メモリ使用量?並行性の下での動作?使いやすさは?構造の名前の長さ? – freakish
@freakish時間が複雑になります。 –
私はtime.time()を提案しましたが、timeitモジュールはより多くのaddaptedです。それは複数回実行し、統計結果を返す – Julien