Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะวัดเวลาดำเนินการสำหรับวิธี Java ได้อย่างไร


โดยทั่วไป เวลาที่ผ่านไปคือเวลาจากจุดเริ่มต้นถึงจุดสิ้นสุดของเหตุการณ์ ต่อไปนี้เป็นวิธีต่างๆ ในการค้นหาเวลาที่ผ่านไปใน Java -

  • เมธอด currentTimeMillis() จะคืนค่าเวลาปัจจุบันเป็นมิลลิวินาที ในการหาเวลาที่ผ่านไปสำหรับวิธีการหนึ่งๆ คุณสามารถรับความแตกต่างระหว่างค่าของเวลาก่อนและหลังการดำเนินการของวิธีการที่ต้องการได้
  • เมธอด nanoTime() จะคืนค่าเวลาปัจจุบันเป็นนาโนวินาที ในการหาเวลาที่ผ่านไปสำหรับวิธีการหนึ่งๆ คุณสามารถรับความแตกต่างระหว่างค่าของเวลาก่อนและหลังการดำเนินการของวิธีการที่ต้องการได้
  • เมธอด now() ของคลาส Instant จะคืนค่าเวลาปัจจุบัน และวิธีการ Duration.between() จะคืนค่าส่วนต่างระหว่างค่าเวลาสองค่าที่ระบุเพื่อรับเวลาที่ผ่านไป ดึงค่าเวลาก่อนและหลังการดำเนินการตามที่ต้องการ เมธอดและดึงระยะเวลาโดยใช้เมธอด Duration.between()
  • ไลบรารี่ทั่วไปของ Apache มีคลาสที่เรียกว่า Stopwatch ซึ่งให้เมธอด start() stop() และ getTime() เพื่อค้นหาเวลาที่ใช้สำหรับการดำเนินการของเมธอด

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการหาเวลาดำเนินการของวิธีการโดยใช้วิธีการที่กล่าวถึงข้างต้น -

นำเข้า java.time.Duration;import java.time.Instant;import org.apache.commons.lang3.time.StopWatch; ตัวอย่างคลาสสาธารณะ { การทดสอบโมฆะสาธารณะ () { int num =0; สำหรับ (int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } โมฆะคงที่สาธารณะ main(String args[]){ Example obj =new Example(); start1 นาน =System.nanoTime(); obj.test(); ปลายยาว 1 =System.nanoTime(); System.out.println("เวลาที่ผ่านไปในหน่วยนาโนวินาที:"+ (end1-start1)); start2 นาน =System.currentTimeMillis(); obj.test(); ปลายยาว2 =System.currentTimeMillis(); System.out.println("เวลาที่ผ่านไปเป็นมิลลิวินาที:"+ (end2-start2)); ทันที inst1 =Instant.now(); obj.test(); ทันที inst2 =ทันที. ทันที (); System.out.println("เวลาที่ผ่านไป:"+ Duration.between(inst1, inst2).toString()); StopWatch stopWatch =นาฬิกาจับเวลาใหม่ (); stopWatch.start(); obj.test(); stopWatch.stop(); System.out.println("เวลาที่ผ่านไปเป็นนาที:"+ stopWatch.getTime()); }}

ผลลัพธ์

<ก่อน>0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276 , 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176 , 1225, 1275, เวลาที่ผ่านไปในหน่วยนาโนวินาที:18823000, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190 , 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990 , 1035, 1081, 1128, 1176, 1225, 1275, เวลาที่ผ่านไปในหน่วยมิลลิวินาที:10, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120 , 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820 , 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, เวลาที่ผ่านไป:PT0.001S0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741 , 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, เวลาที่ผ่านไปเป็นนาที:1