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

จะคำนวณเวลาที่ผ่านไป / ดำเนินการใน Java ได้อย่างไร?


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

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

ตัวอย่าง:การใช้เมธอด currentTimeMillis()

 ตัวอย่างคลาสสาธารณะ { การทดสอบโมฆะสาธารณะ () { int num =0; สำหรับ (int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } โมฆะคงที่สาธารณะ main(String args[]){ //เริ่มต้นเวลานานเริ่มต้น =System.currentTimeMillis (); //เริ่มการชมใหม่ Example().test(); //เวลาสิ้นสุด สิ้นสุดแบบยาว =System.currentTimeMillis(); เวลานาน =สิ้นสุด - เริ่ม; System.out.println(); System.out.println("เวลาที่ผ่านไป:"+เวลา +" มิลลิวินาที"); }}

ผลลัพธ์

<ก่อน>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,เวลาที่ผ่านไป:4 มิลลิวินาที

ตัวอย่าง:การใช้เมธอด nanoTime()

 ตัวอย่างคลาสสาธารณะ { การทดสอบโมฆะสาธารณะ () { int num =0; สำหรับ (int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } โมฆะคงที่สาธารณะ main(String args[]){ //เริ่มต้นเวลานานเริ่มต้น =System.nanoTime(); //เริ่มการชมใหม่ Example().test(); //เวลาสิ้นสุด สิ้นสุดแบบยาว =System.nanoTime(); เวลานาน =สิ้นสุด - เริ่ม; System.out.println(); System.out.println("เวลาที่ผ่านไป:"+เวลา); }}

ผลลัพธ์

<ก่อน>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,เวลาที่ผ่านไป:1530200

ตัวอย่าง:การใช้คลาสทันใจ

นำเข้า java.time.Duration;import java.time.Instant; ตัวอย่างคลาสสาธารณะ { การทดสอบโมฆะสาธารณะ () { int num =0; สำหรับ (int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } โมฆะคงที่สาธารณะ main (String args []) {// เวลาเริ่มต้น การเริ่มต้นทันที =Instant.now (); ตัวอย่างใหม่().test(); //เวลาสิ้นสุด สิ้นสุดทันที =Instant.now(); นาน =Duration.between(เริ่ม, สิ้นสุด).toMillis(); System.out.println(); System.out.println(เวลา+" มิลลิวินาที"); }}

ผลลัพธ์

<ก่อน>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,3 มิลลิวินาที

ตัวอย่าง:การใช้คลาส StopWatch

นำเข้า 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 []) {// การตรวจสอบคลาส StopWatch StopWatch obj =ใหม่ StopWatch (); //การเริ่มต้นนาฬิกา obj.start(); ตัวอย่างใหม่().test(); //หยุดนาฬิกา obj.stop(); System.out.println(); System.out.println("เวลาที่ผ่านไป:"+obj.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,เวลาที่ผ่านไป:1 มิลลิวินาที

ตัวอย่าง:การใช้เมธอด getTime()

นำเข้า java.util.Date;สาธิตคลาสสาธารณะ { การทดสอบโมฆะสาธารณะ () { int num =0; สำหรับ (int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } โมฆะคงที่สาธารณะหลัก (สตริง [] args) { startTime ยาว =วันที่ใหม่ ().getTime (); สาธิตใหม่().test(); endTime ยาว =วันที่ใหม่ ().getTime (); เวลานาน =endTime - startTime; System.out.println("เวลาดำเนินการ:" + เวลา); }}

ผลลัพธ์

<ก่อน>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, เวลาดำเนินการ:5

ตัวอย่าง:การใช้คลาสปฏิทิน

นำเข้า java.util.Calendar;สาธิตคลาสสาธารณะ { การทดสอบโมฆะสาธารณะ () { int num =0; สำหรับ (int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น InterruptedException { startTime ยาว =Calendar.getInstance ().getTime ().getTime (); สาธิตใหม่().test(); endTime ยาว =Calendar.getInstance().getTime().getTime(); เวลานาน =endTime - startTime; System.out.println("เวลาดำเนินการ:" + เวลา); }}

ผลลัพธ์

 

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 เวลาดำเนินการ:20