คลาส Timer และฟังก์ชันอำนวยความสะดวกอื่นๆ ในโมดูล timeit ของไลบรารีมาตรฐานของ Python ได้รับการออกแบบมาเพื่อให้มีกลไกในการวัดเวลาที่ใช้โดยโค้ด Python ขนาดเล็กในการดำเนินการ โมดูลมีส่วนต่อประสานบรรทัดคำสั่งและสามารถเรียกใช้ฟังก์ชันจากภายในโปรแกรมได้เช่นกัน
วิธีที่ง่ายที่สุดในการวัดเวลาของการดำเนินการคือการใช้ฟังก์ชันอำนวยความสะดวกดังต่อไปนี้
timeit()
ฟังก์ชันนี้ส่งคืนวัตถุของคลาส Timer ส่วนใหญ่ต้องใช้สองพารามิเตอร์
-
stmt − สตริงที่มีคำสั่ง Python ที่ถูกต้องซึ่งจะมีการวัดเวลาดำเนินการ
-
ตั้งค่า − สตริงที่มีคำสั่ง Python ซึ่งจะถูกดำเนินการเพียงครั้งเดียว เป็นหลักในการเริ่มต้นวัตถุหรือตัวแปรบางอย่าง
สตริงทั้งสองอาจมีหลายคำสั่งคั่นด้วยเครื่องหมายเซมิโคลอน (;) หรือการขึ้นบรรทัดใหม่ และทั้งสองค่าเริ่มต้นจะส่งผ่านคีย์เวิร์ด อาจระบุหมายเลขพารามิเตอร์ทางเลือกอื่นซึ่งหมายถึงจำนวนการดำเนินการของ 'stmt'
ในตัวอย่างต่อไปนี้ เวลาที่ใช้ในการดำเนินการพันครั้ง ระบบจะวัดการเพิ่มตัวเลขในช่วง 0-100
import timeit setupcode = "s = 0" function = ''' for x in range(100): s = s + x ''' print (timeit.timeit(setup = setupcode, stmt = function, number = 1000))
ในที่นี้สตริงมี for loop ซึ่งเพิ่มตัวเลขภายในช่วง 0-100 สตริงนี้เป็นพารามิเตอร์ stmt นอกจากนี้ การกำหนดค่าเริ่มต้นของตัวแปรยังทำได้โดยสตริง setupcode ฟังก์ชัน timeit() คำนวณเวลาที่ต้องการเป็นวินาที
ผลผลิต
0.03055878530880241
คลาสจับเวลา
ผลลัพธ์เดียวกันสามารถรับได้โดยการสร้างวัตถุ Timer ก่อนแล้วจึงรันเมธอด timeit() กับวัตถุนั้น
ซ้ำ()
คลาส Timer ยังมีเมธอด repeat() เพื่อเรียก timeit() ซ้ำ ๆ ส่งคืนรายการการโทรทั้งหมด
โค้ดด้านบนรุ่นเชิงวัตถุมีดังต่อไปนี้ -
import timeit setupcode = "s = 0" function = ''' for x in range(100): s = s + x ''' t = timeit.Timer(setup = setupcode, stmt = function) print (t.timeit(number = 1000)) print ('calling repeat() :',t.repeat(3,1000))
ผลผลิต
0.019971274194651528 calling repeat() : [0.023369810546474253, 0.020518432391765262, 0.02075439436427058]
อินเตอร์เฟสบรรทัดคำสั่ง
ดังที่ได้กล่าวไว้ก่อนหน้านี้ โมดูล timeit มีอินเทอร์เฟซบรรทัดคำสั่ง นำเข้าโมดูลเองโดยใช้ตัวเลือก –m ในบรรทัดคำสั่งเพื่อเรียกใช้สคริปต์ Python ตัวเลือกบรรทัดคำสั่งต่อไปนี้จะกำหนดการตั้งค่าบรรทัดพารามิเตอร์ต่างๆ และโค้ดที่เรียกใช้ได้ ความถี่ในการทำซ้ำ ฯลฯ
-n N, --number =N | ดำเนินการ 'คำสั่ง' กี่ครั้ง |
-r N, --repeat =N | จับเวลาซ้ำกี่ครั้ง (ค่าเริ่มต้น 3) |
-s S, --setup =S | คำสั่งที่จะดำเนินการในครั้งแรก (ผ่านค่าเริ่มต้น) |
-v, --verbose | พิมพ์ผลลัพธ์เวลาดิบ; ทำซ้ำเพื่อความแม่นยำของตัวเลขมากขึ้น |
-h --help | พิมพ์ข้อความการใช้งานสั้นๆ แล้วออก |
ต่อไปนี้เป็นบรรทัดคำสั่งที่เทียบเท่ากับโค้ดตัวอย่างที่ใช้ก่อนหน้านี้ -
C:\Users\acer>python -m timeit -s "s = 0" "for x in range(100): s = s + x" 10000 loops, best of 3: 22.4 usec per loop