Just another WordPress.com site

ตัวแปรชนิด clock_t เป็นตัวแปรที่ใช้จับเวลา เหมือนนาฬิกาจับเวลานั่นแหละครับ การที่เราจะใช้ตัวแปรนี้ได้ เราจะต้อง import ไลบรารี่ ctime ขึ้นมาก่อน รูปแบบการใช้จะเป็นดังนี้ครับ

ในไลบรารี่ ctime นั้นมีฟังก์ชันที่ชื่อว่า clock() ซึ่งจะ return จำนวนครั้งของสัญญาณนาฬิกาตั้งแต่เริ่มต้นโปรแกรมจนกระทั่งเราเรียกฟังก์ชัน clock() ออกมาครับ เช่น

ค่า 1702 ที่ได้ออกมานั้นบอกเราว่าตั้งแต่เริ่มต้นโปรแกรมจนกระทั่งเรียกใช้ฟังก์ชัน clock() นาฬิกาตีทั้งหมด 1702 ครั้ง(จำนวนครั้งในการรันแต่ละรอบจะไม่เท่ากันนะครับ แต่ค่าจะใกล้เคียงกัน)

ทีนี้สมมติว่าผมต้องการทดสอบว่า pre increasing operator กับ post increasing operator ว่าตัวไหนมันทำงานเร็วกว่ากัน ผมจะทำการทดสอบครั้งดังนี้ครับ

ครั้งแรกผมจะทดสอบสอบความเร็วของ pre increasing operator ก่อนครับ

ผลลัพธ์ที่ได้หมายความว่าตั้งแต่เริ่มจับเวลาจนกระทั่งสิ้นสุดการจับเวลา สัญญาณนาฬิกาตีทั้งหมด 3130441 ครั้งครับ

ต่อไปผมจะลองทดสอบความเร็วของ post increasing operator ดังนี้ครับ

ผลลัพธ์ที่ได้หมายความว่าตั้งแต่เริ่มจับเวลาจนกระทั่งสิ้นสุดการจับเวลา สัญญาณนาฬิกาตีทั้งหมด 3136045 ครั้งครับ

สรุปได้ว่า pre increasing operator ทำงานได้เร็วกว่า post increasing operator ครับ

สัญญาณนาฬิกาตีหนึ่งครั้งเทียบเท่ากับเวลา 1 ใน 1,000,000 วินาทีครับ ดังนั้นถ้าเราอยากจะแปลงเวลาที่ได้ให้เป็นหน่วยวินาที เราจะเอา 1,000,000 ไปหารครับ

ในไลบรารี่ ctime จะมีค่าคงที่ตัวนึงที่ชื่อว่า CLOCKS_PER_SEC ซึ่งมีค่าเท่ากับ 1,000,000 ครับ

ดังนั้นถ้าเราอยากจะได้เวลาในหน่วยวินาที เราสามารถทำได้โดยการหารด้วย CLOCKS_PER_SEC ดังนี้ครับ

หมายเหตุ ถ้าในส่วนที่เราต้องการจับเวลามีคำส่วนที่ทำให้โปรแกรมหยุดรอชั่วคราว เช่น คำสั่ง getchar(); cin>>x; เป็นต้น สัญญาณนาฬิกาก็จะหยุดลงไปด้วยนะครับ!!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: