वीर

18 กรกฎาคม 2008

eumerate(file) v. file.readlines()

Filed under: Uncategorized — Tags: , , , — वीर @ 10:16

จาก plynoi ถามมาว่า enumerate(file) มันดีกว่าใช้ file.readlines() อย่างไร. plynoi ตอบเองว่าได้ index มาด้วย. แต่มันก็น่าจะมีอะไรมากกว่านั้นหน่อยผมเลยลองทำ 2 โปรแกรมนี้.

enum1.py:

import sys
filename = sys.argv[1]
f = open(filename)
print f.readlines()[0]
f.close()

enum2.py:

import sys
filename = sys.argv[1]
f = open(filename)
for i, line in enumerate(f):
    print i, line
    break
f.close()

ทั้ง 2 โปรแกรม print บรรทัดแรกอย่างเดียวนะครับ

veer@veer-laptop:wordalign$ time python enum1.py tha_cut_u8.txt > /dev/null
real	0m0.076s
user	0m0.044s
sys	0m0.032s

$ time python enum2.py tha_cut_u8.txt > /dev/null
real	0m0.021s
user	0m0.012s
sys	0m0.008s

enum2.py เร็วกว่ามาก … น่าจะเป็นเพราะว่า enum2.py อ่านทีละบรรทัดแล้วก็มาทำอะไรต่ออะไรใน for-loop เลย. แต่ enum1.py อ่านทุกอย่างมาเก็บใน list แล้วค่อย มาทำอะไรใน list อีกที … ถ้าเป็นแบบที่เดาจริง มันจะประหยัด memory กว่าถ้าใช้ enumerate. ประโยชน์อีกอย่างหนึงถ้าทำอะไรแบบ interactive ดูผลทีละบรรทัด ใช้ enumerate ก็น่าจะได้ดูไวกว่า.

No Comments Yet »

ยังไม่มีความคิดเห็นใดๆ

RSS feed สำหรับความคิดเห็นในกระทู้นี้ TrackBack URI

เขียนความคิดเห็นของคุณ

บลอกที่ WordPress.com .