เวลาดำเนินการ NYTProf เมื่อทำโปรไฟล์และเมื่อไม่มีการทำโปรไฟล์

แค่อยากจะแน่ใจ

ฉันมีสคริปต์ Python ขนาดเล็กที่ใช้วัดเวลาการทำงานของโปรแกรม ซึ่งช่วยประหยัดเวลาก่อนที่โปรแกรมภายนอกจะเริ่มทำงาน แล้วลบค่านี้ออกจากเวลาหลังจากที่โปรแกรมสิ้นสุดการทำงานของโปรแกรม

เมื่อเรียกใช้สคริปต์นี้บนสคริปต์ Perl จะแสดงเวลาดำเนินการ 0.49263 และเมื่อเรียกใช้สคริปต์เดียวกันกับ NYTProf และดูภายในรายงาน HTML ที่สร้างโดย nytprofhtml ฉันจะเห็นว่าเวลาดำเนินการคือ 0.80784 เพิ่มขึ้นเกือบสองเท่า

ตกลงไหม? ฉันคิดว่าการทำโปรไฟล์ควรเพิ่มเวลาดำเนินการ แต่มากขนาดนั้นเลยเหรอ?


person ggat    schedule 21.01.2014    source แหล่งที่มา


คำตอบ (1)


นี่เป็นเรื่องปกติ เนื่องจาก Devel::NYTProf จำเป็นต้องดูทุกคำสั่งเดียว (และบล็อก และอื่นๆ) จำเป็นต้องเขียนข้อมูลโปรไฟล์ลงดิสก์สำหรับแต่ละคำสั่ง ค่าใช้จ่ายนี้ค่อนข้างสูง นั่นเป็นเหตุผลที่คุณไม่ควรรันมันในการผลิต

มีข้อมูลบางอย่างเกี่ยวกับวิธีทำให้ทำงานเร็วขึ้นได้ในเอกสารประกอบ .


หากคุณรันบนบรรทัดคำสั่งของ linux ก็ไม่จำเป็นต้องมีโปรแกรมอื่นใดเพื่อรับเวลาดำเนินการของคำสั่ง เพียงทำสิ่งนี้บนเชลล์:

$ time perl foo.pl
person simbabque    schedule 21.01.2014
comment
ตกลง. แน่นอนว่ามันมีค่าใช้จ่ายของตัวเอง แต่ NYTProf รู้ว่างานของตัวเองใช้เวลาเท่าไร (เขียนข้อมูลบนดิสก์ เวลาวัด bla bla) และรู้ว่าโปรแกรมเป้าหมาย/โปรไฟล์ใช้เวลาเท่าใด จึงสามารถแยกเวลาที่ใช้เองกับเวลาที่โปรแกรมใช้จริงได้ - person ggat; 21.01.2014