ฉันคาดว่าarray.array
จะเร็วกว่ารายการเนื่องจากอาร์เรย์ดูเหมือนจะไม่มีกล่อง
อย่างไรก็ตามฉันได้รับผลลัพธ์ต่อไปนี้:
In [1]: import array
In [2]: L = list(range(100000000))
In [3]: A = array.array('l', range(100000000))
In [4]: %timeit sum(L)
1 loop, best of 3: 667 ms per loop
In [5]: %timeit sum(A)
1 loop, best of 3: 1.41 s per loop
In [6]: %timeit sum(L)
1 loop, best of 3: 627 ms per loop
In [7]: %timeit sum(A)
1 loop, best of 3: 1.39 s per loop
อะไรคือสาเหตุของความแตกต่างดังกล่าว
array
แพ็คเกจ หากคุณต้องการที่จะทำจำนวนเงินที่สำคัญของคณิตศาสตร์ Numpy ทำงานที่ความเร็วแสง (เช่น C) และมักจะดีกว่าการใช้งานที่ไร้เดียงสาของสิ่งที่ต้องการsum()
)
array
ค่อนข้างเร็วในการแปลงสตริงจำนวนเต็ม (แทน ASCII ไบต์) เป็นstr
วัตถุ กุยโด้เองก็มาด้วยวิธีนี้หลังจากแก้ปัญหาอื่น ๆ มากมายและรู้สึกประหลาดใจกับประสิทธิภาพ อย่างไรก็ตามนี่เป็นที่เดียวที่ฉันจำได้ว่ามันมีประโยชน์ numpy
ดีกว่ามากสำหรับการจัดการกับอาร์เรย์ แต่มันเป็นการพึ่งพาบุคคลที่สาม