คุณทดสอบโค้ด JavaScript ได้อย่างไร


337

รอบ CPU, การใช้หน่วยความจำ, เวลาดำเนินการ ฯลฯ ?

เพิ่มเติม: มีวิธีการเชิงปริมาณของการทดสอบประสิทธิภาพใน JavaScript นอกเหนือจากการรับรู้ว่าโค้ดรันเร็วแค่ไหน?


คุณอาจต้องการดูปลั๊กอินYSlowสำหรับ Firefox
Rob Wells

7
นั่นเป็นเพียงการบอกคุณว่าต้องใช้เวลาในการโหลดนานแค่ไหน ฉันคิดว่าคำถามเกี่ยวข้องกับประสิทธิภาพมากขึ้นเมื่อใช้งาน
Sam Hasler

หากคุณต้องการที่จะใช้รหัสของคุณสำหรับการปฏิบัติงานวิธีที่พบบ่อยที่สุด (และแม่นยำที่สุดเนื่องจากคุณสามารถฝึกฝนในฟังก์ชั่นเฉพาะ) โพสต์นี้มีตัวอย่างที่ดีของการใช้ตัวจับเวลา (แต่คุณควรดู Performance.now จริงๆหากคุณมีโอกาส): albertech.blogspot.com/2015/07/…
jar

1
สำหรับการทดสอบที่รวดเร็วและง่ายดายในเบราว์เซอร์ของคุณคุณสามารถใช้jsben.ch
EscapeNetscape

คำตอบ:


325

เครื่องมือสร้างโปรไฟล์เป็นวิธีที่ดีในการรับตัวเลข แต่จากประสบการณ์ของฉันการรับรู้ประสิทธิภาพเป็นสิ่งที่สำคัญสำหรับผู้ใช้ / ลูกค้า ตัวอย่างเช่นเรามีโครงการที่มีหีบเพลง Ext ที่ขยายออกเพื่อแสดงข้อมูลบางส่วนและจากนั้นกริด Ext ที่ซ้อนกันสองสามรายการ จริง ๆ แล้วทุกอย่างกำลังเรนเดอร์เร็วไม่มีการดำเนินการเดี่ยวใช้เวลานานมีข้อมูลจำนวนมากที่ถูกเรนเดอร์พร้อมกันดังนั้นผู้ใช้จึงรู้สึกช้า

เรา 'แก้ไข' สิ่งนี้ไม่ใช่โดยเปลี่ยนเป็นส่วนประกอบที่เร็วขึ้นหรือปรับวิธีการให้เหมาะสม แต่โดยการเรนเดอร์ข้อมูลก่อนจากนั้นเรนเดอร์กริดด้วย setTimeout ดังนั้นข้อมูลที่ปรากฏขึ้นก่อนจากนั้นกริดจะปรากฏขึ้นในวินาทีต่อมา โดยรวมแล้วใช้เวลาประมวลผลนานกว่าเล็กน้อยในการทำเช่นนั้น แต่สำหรับผู้ใช้ประสิทธิภาพการรับรู้ก็ดีขึ้น


วันนี้, Profiler Chrome และเครื่องมืออื่น ๆ ในระดับสากลที่มีอยู่และใช้งานง่ายเช่นเดียวกับconsole.time(), และconsole.profile() performance.now()Chrome ยังให้มุมมองไทม์ไลน์แก่คุณซึ่งสามารถแสดงสิ่งที่กำลังฆ่าอัตราเฟรมของคุณซึ่งผู้ใช้อาจรอ ฯลฯ

การค้นหาเอกสารสำหรับเครื่องมือทั้งหมดเหล่านี้เป็นเรื่องง่ายมากคุณไม่จำเป็นต้องมีคำตอบ SO สำหรับสิ่งนั้น 7 ปีต่อมาฉันจะยังคงทำซ้ำคำแนะนำเดิมของฉันและชี้ให้เห็นว่าคุณสามารถใช้งานโค้ดแบบช้าได้ตลอดไปโดยที่ผู้ใช้จะไม่สังเกตเห็นและรหัสที่ทำงานได้อย่างรวดเร็วและพวกเขาจะบ่นเกี่ยวกับ รหัสรวดเร็วสวยไม่เร็วพอ หรือว่าคำขอของคุณไปยังเซิร์ฟเวอร์ API ของคุณใช้เวลา 220ms หรืออย่างอื่นเช่นนั้น ประเด็นที่ยังคงอยู่คือถ้าคุณนำ profiler ออกไปและหางานทำคุณจะพบมัน แต่มันอาจไม่ใช่งานที่ผู้ใช้ของคุณต้องการ


3
มันเป็นขั้นตอนการปรับแต่งหลังจากอัลกอริทึมของนักแสดงที่มีชื่อเสียงเป็นที่ยอมรับ
Rafael Xavier

1
นี่เป็นคำตอบที่ดีมากโดยใช้แนวทางปฏิบัติกับสถานการณ์ส่วนใหญ่ที่คำถามอธิบาย อย่างไรก็ตามมันไม่ได้ตอบคำถามที่ถามว่ามีวิธีอื่นในการวัดสิ่งอื่นนอกเหนือจากการรับรู้ของผู้ใช้หรือไม่ การหยุดทำงานทั้งหมดเช่นเมื่อปุ่มถูกแช่แข็งยังคงสามารถวัดได้โดยใช้วิธีการในคำตอบของ pramodc และความคิดเห็นที่แนบมากับมัน
RoboticRenaissance

202

ฉันยอมรับว่าการรับรู้เป็นสิ่งที่สำคัญจริงๆ แต่บางครั้งฉันแค่อยากรู้ว่าวิธีการทำอะไรเร็วขึ้น บางครั้งความแตกต่างก็มหาศาลและคุ้มค่าที่จะรู้

คุณสามารถใช้ตัวจับเวลาจาวาสคริปต์ แต่โดยทั่วไปแล้วฉันจะได้รับผลลัพธ์ที่สอดคล้องกันมากกว่าเดิมโดยใช้ Chrome ดั้งเดิม (ตอนนี้ยังอยู่ใน Firefox และ Safari) วิธีการ devTool console.time()&console.timeEnd()

ตัวอย่างการใช้งาน:

var iterations = 1000000;
console.time('Function #1');
for(var i = 0; i < iterations; i++ ){
    functionOne();
};
console.timeEnd('Function #1')

console.time('Function #2');
for(var i = 0; i < iterations; i++ ){
    functionTwo();
};
console.timeEnd('Function #2')

ผลลัพธ์มีลักษณะเช่นนี้

อัปเดต (4/4/2559):

เมื่อไม่นานมานี้ Chrome canary ได้เพิ่มการทำโปรไฟล์ระดับ Lineแท็บเครื่องมือ dev ซึ่งจะช่วยให้คุณเห็นว่าแต่ละบรรทัดใช้เวลาดำเนินการนานเท่าใด! ป้อนคำอธิบายรูปภาพที่นี่


ใช่หนึ่งในเสน่ห์ของอันนี้คือมันเร็วและง่ายที่จะนำไปใช้ ฉันสงสัยว่าการเข้าสู่ระบบจะใช้ประสิทธิภาพบางอย่างจากการประมวลผลจาวาสคริปต์ สมมติว่าเรามีการวนซ้ำในเกมและมันส่งออกแถวบันทึกหลายแถว ตัวอย่างเช่นหนึ่งครั้งต่อวินาทีเป็นเวลา 5 นาทีนั่นคือ 300 แถว ใครรู้หรือไม่
K. Kilian Lindberg

สิ่งนี้ยังคงเปิดใช้งานหรือไม่ ไม่สนใจใน Chrome
สถิติการเรียนรู้ตามตัวอย่าง

2
ยังใช้งานได้สำหรับฉัน developer.chrome.com/devtools/docs/console-api#consoletimelabel
Jose Browne

@ K.KilianLindberg การบันทึกจะใช้เวลาเสมอจากประสิทธิภาพเช่นเดียวกับรหัสใด ๆ แต่ก) มันจะสอดคล้องกันในการทดสอบและ b) คุณไม่ควรทำการบันทึกคอนโซลในรหัสสด หลังจากการทดสอบบนเครื่องของฉันการบันทึกเวลาเป็นเพียงเศษเสี้ยวของ MS แต่มันจะยิ่งเพิ่มมากขึ้น
Polyducks

92

เรามักจะสามารถวัดเวลาที่ถ่ายโดยฟังก์ชั่นใด ๆ โดยวันที่วัตถุที่เรียบง่าย

var start = +new Date();  // log start timestamp
function1();
var end =  +new Date();  // log end timestamp
var diff = end - start;

10
โปรดทราบว่าโซลูชันนี้จะคืนค่าความต่างหน่วยเป็นมิลลิวินาที
Chris Bier

16
การใช้วันที่ () นั้นไม่ได้รับการสนับสนุนเนื่องจากเวลาในหน่วยมิลลิวินาทีสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับปัจจัยของระบบ ใช้ console.time () และ console.timeEnd () แทน ดูคำตอบโดย JQuery Lover สำหรับรายละเอียดเพิ่มเติม
mbokil

44
ดียิ่งขึ้นใช้performance.now()
edan

1
ก่อนใช้ performance.now () โปรดตรวจสอบความเข้ากันได้ของเบราว์เซอร์ developer.mozilla.org/en-US/docs/Web/API/Performance/
......

วันที่ไม่ได้เป็นตัวแทนของเวลาที่ผ่านไปจริงๆ ตรวจสอบบทความนี้เกี่ยวกับมัน: sitepoint.com/measuring-javascript-functions-performance Performance.now () คือการประทับเวลาที่แม่นยำยิ่งขึ้น
Millsionaire

61

ลองjsPerf เป็นเครื่องมือประสิทธิภาพจาวาสคริปต์ออนไลน์สำหรับการเปรียบเทียบและเปรียบเทียบข้อมูลโค้ด ฉันจะใช้มันตลอดเวลา.


1
ตั้งแต่ jsPerf เป็นลงในขณะนี้ , benchmarkjs เป็นที่จะใช้แทนได้ง่าย
mucaho

ฉันยังแนะนำเพราะจะให้การวัด ops / วินาที (มันรันรหัสของคุณหลายครั้ง)
Richard Richard

+9001 (มากกว่าเก้าพัน;) สำหรับ jsPerf ฉันใช้สิ่งนี้ในลักษณะที่คล้ายกันเป็นประจำ%timeitในipythonเชลล์ REPL สำหรับรหัส Python
สะสม

37

performance.now()เบราว์เซอร์ส่วนใหญ่อยู่ในขณะนี้การดำเนินการระยะเวลาความละเอียดสูงใน มันยอดเยี่ยมnew Date()สำหรับการทดสอบประสิทธิภาพเพราะทำงานได้อย่างอิสระจากนาฬิกาของระบบ

การใช้

var start = performance.now();

// code being timed...

var duration = performance.now() - start;

อ้างอิง


2
ยิ่งไปกว่านั้นคือการใช้User Timing APIซึ่งจะสร้างperformance.now()ต่อไป
คริส

30

JSLitmusเป็นเครื่องมือที่มีน้ำหนักเบาสำหรับสร้างการทดสอบเกณฑ์มาตรฐานจาวาสคริปต์

ให้ตรวจสอบประสิทธิภาพระหว่างfunction expressionและfunction constructor:

<script src="JSLitmus.js"></script>
<script>

JSLitmus.test("new Function ... ", function() { 
    return new Function("for(var i=0; i<100; i++) {}"); 
});

JSLitmus.test("function() ...", function() { 
       return (function() { for(var i=0; i<100; i++) {}  });
});

</script>

สิ่งที่ฉันทำข้างต้นคือการสร้างfunction expressionและfunction constructorการดำเนินการเดียวกัน ผลลัพธ์มีดังนี้:

ผลการดำเนินงานของ FireFox

ผลการดำเนินงานของ FireFox

ผลการดำเนินงาน IE

ผลการดำเนินงาน IE


เพจ JSLitmus ที่ลิงก์มีลิงก์ดาวน์โหลดที่เสียหาย ฉันพบJSLitmus (สำหรับเบราว์เซอร์) และjslitmus (สำหรับ NodeJS, ตัวพิมพ์เล็ก!)
Rob W

16

บางคนกำลังแนะนำปลั๊กอินและ / หรือเบราว์เซอร์ที่เฉพาะเจาะจง ฉันจะไม่เพราะพวกเขามีประโยชน์จริงๆสำหรับหนึ่งแพลตฟอร์มนั้น การทดสอบการทำงานบน Firefox จะไม่แปลอย่างถูกต้องเป็น IE7 เมื่อพิจารณาจาก 99.999999% ของเว็บไซต์ที่มีเบราว์เซอร์มากกว่าหนึ่งแห่งคุณต้องตรวจสอบประสิทธิภาพบนแพลตฟอร์มยอดนิยมทั้งหมด

ข้อเสนอแนะของฉันจะเก็บไว้ใน JS สร้างหน้าการเปรียบเทียบกับการทดสอบ JS ทั้งหมดของคุณและเวลาดำเนินการ คุณสามารถให้ AJAX โพสต์ผลลัพธ์กลับมาให้คุณเพื่อให้เป็นไปโดยอัตโนมัติ

จากนั้นเพียงแค่ล้างและทำซ้ำบนแพลตฟอร์มที่แตกต่างกัน


5
สิ่งนี้เป็นเรื่องจริง แต่ผู้สร้างโปรไฟล์จะดีในกรณีที่มีปัญหาในการเขียนโค้ดซึ่งไม่เกี่ยวข้องกับปัญหาเฉพาะของเบราว์เซอร์
John Boker

1
แน่นอน! ใช่พวกเขาจะพบปัญหา "การเขียนโค้ดไม่ดี" ทั่วไปและปัญหาเฉพาะนั้นยอดเยี่ยมสำหรับการทำดีบั๊กจริง แต่สำหรับการทดสอบการใช้งานทั่วไปคุณจะได้รับประโยชน์จากสิ่งที่ทำงานบนแพลตฟอร์มทั้งหมด
Oli

2
+1 เมื่อทราบว่านี่เป็นความจริง แต่การมีผู้สร้างโปรไฟล์เช่น Firebug ยังคงยอดเยี่ยมหากไม่จำเป็นเพื่อค้นหาคอขวด
Pekka

1
" พิจารณา 99.999999% ของเว็บไซต์ ... " ฉันคิดว่าคุณทำแล้ว…: - /
RobG

@RobG ฉันอาจพูดเกินทศนิยมหรือสอง แต่ความคิดที่ว่าแพลตฟอร์มการพัฒนาของคุณอาจไม่เหมือนแพลตฟอร์มการปรับใช้ของคุณ
Oli

11

ฉันมีเครื่องมือขนาดเล็กที่ฉันสามารถเรียกใช้กรณีทดสอบขนาดเล็กได้อย่างรวดเร็วในเบราว์เซอร์และรับผลลัพธ์ทันที:

ทดสอบความเร็ว JavaScript

คุณสามารถเล่นกับรหัสและค้นหาว่าเทคนิคไหนดีกว่าในเบราว์เซอร์ที่ทดสอบ


ขอบคุณนี่คือสิ่งที่ฉันกำลังมองหา
โจเซฟ Sheedy


9

นี่คือฟังก์ชั่นง่าย ๆ ที่แสดงเวลาดำเนินการของฟังก์ชันส่งผ่าน:

var perf = function(testName, fn) {
    var startTime = new Date().getTime();
    fn();
    var endTime = new Date().getTime();
    console.log(testName + ": " + (endTime - startTime) + "ms");
}


4

คำตอบที่รวดเร็ว

เมื่อวันที่ jQuery (มากขึ้นโดยเฉพาะใน Sizzle) เราจะใช้นี้ (ต้นแบบเช็คเอาท์และความเร็วในการเปิด / index.html ในเบราว์เซอร์ของคุณ) ซึ่งในการใช้งานเปิดbenchmark.js ใช้เพื่อทดสอบประสิทธิภาพของไลบรารี

คำตอบที่ยาว

หากผู้อ่านไม่ทราบความแตกต่างระหว่างมาตรฐานภาระงานและโปรแรกอ่านผลการดำเนินงานบางการทดสอบรากฐานในส่วน "readme ที่ 1" ของ spec.org สิ่งนี้ใช้สำหรับการทดสอบระบบ แต่การเข้าใจรากฐานนี้จะช่วยให้การทดสอบ JS สมบูรณ์แบบเช่นกัน ไฮไลท์บางส่วน:

เกณฑ์มาตรฐานคืออะไร

มาตรฐานคือ "มาตรฐานการวัดหรือประเมินผล" (พจนานุกรม II ของเว็บสเตอร์) โดยทั่วไปเกณฑ์มาตรฐานคอมพิวเตอร์เป็นโปรแกรมคอมพิวเตอร์ที่ดำเนินการชุดการปฏิบัติงานที่กำหนดอย่างเคร่งครัด - ภาระงาน - และส่งกลับผลลัพธ์บางรูปแบบ - ตัวชี้วัด - อธิบายการทำงานของคอมพิวเตอร์ที่ทดสอบ ตัวชี้วัดมาตรฐานคอมพิวเตอร์มักจะวัดความเร็ว: ปริมาณงานเสร็จเร็วแค่ไหน หรือปริมาณงาน: จำนวนเวิร์กโหลดหน่วยต่อหนึ่งหน่วยเวลาเสร็จสมบูรณ์ การรันเกณฑ์มาตรฐานคอมพิวเตอร์เครื่องเดียวกันบนคอมพิวเตอร์หลาย ๆ เครื่องช่วยให้สามารถทำการเปรียบเทียบได้

ฉันควรเกณฑ์มาตรฐานแอปพลิเคชันของตัวเอง?

เป็นการทดสอบที่ดีที่สุดสำหรับการเปรียบเทียบระบบจะเป็นแอปพลิเคชันของคุณเองที่มีปริมาณงานของคุณเอง น่าเสียดายที่มักจะไม่สามารถใช้การวัดที่เชื่อถือได้ทำซ้ำและเปรียบเทียบได้สำหรับระบบที่แตกต่างกันโดยใช้แอปพลิเคชันของคุณเองที่มีปริมาณงานของคุณเอง ปัญหาอาจรวมถึงการสร้างกรณีทดสอบที่ดีความกังวลเรื่องการรักษาความลับความยากลำบากในการตรวจสอบเงื่อนไขที่เทียบเคียงเวลาเงินหรือข้อ จำกัด อื่น ๆ

ถ้าไม่ใช่แอปพลิเคชันของฉันเองแล้วจะเป็นอย่างไร

คุณอาจต้องการพิจารณาใช้การวัดประสิทธิภาพมาตรฐานเป็นจุดอ้างอิง เกณฑ์มาตรฐานจะเป็นแบบพกพาและอาจรันบนแพลตฟอร์มที่คุณสนใจอย่างไรก็ตามก่อนที่คุณจะพิจารณาผลลัพธ์ที่คุณต้องแน่ใจว่าคุณเข้าใจความสัมพันธ์ระหว่างความต้องการของแอปพลิเคชัน / คอมพิวเตอร์ของคุณและสิ่งที่ มาตรฐานคือการวัด มาตรฐานมีความคล้ายคลึงกับแอพพลิเคชั่นที่คุณใช้หรือไม่? ปริมาณงานมีลักษณะคล้ายกันหรือไม่ จากคำตอบของคำถามเหล่านี้คุณสามารถเริ่มดูว่ามาตรฐานอาจประมาณความเป็นจริงของคุณอย่างไร

หมายเหตุ: เกณฑ์มาตรฐานสามารถใช้เป็นจุดอ้างอิงได้ อย่างไรก็ตามเมื่อคุณทำการเลือกผู้จำหน่ายหรือผลิตภัณฑ์ SPEC ไม่ได้อ้างว่าเกณฑ์มาตรฐานใด ๆ สามารถแทนที่การเปรียบเทียบการใช้งานจริงของคุณเอง

การทดสอบประสิทธิภาพ JS

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

หากไม่สามารถทำได้ (และโดยปกติจะไม่เป็นเช่นนั้น) ขั้นตอนสำคัญแรก: กำหนดภาระงานของคุณ ควรสะท้อนถึงปริมาณงานของแอปพลิเคชันของคุณ ในการพูดคุยนี้ Vyacheslav Egorov พูดเกี่ยวกับภาระงานที่น่ารังเกียจที่คุณควรหลีกเลี่ยง

จากนั้นคุณสามารถใช้เครื่องมือเช่น benchmark.js เพื่อช่วยให้คุณรวบรวมตัวชี้วัดโดยทั่วไปแล้วความเร็วหรือปริมาณงาน บน Sizzle เราสนใจที่จะเปรียบเทียบว่าการแก้ไขหรือเปลี่ยนแปลงมีผลต่อประสิทธิภาพของระบบในห้องสมุดอย่างไร

หากสิ่งที่มีประสิทธิภาพไม่ดีจริงๆขั้นตอนต่อไปของคุณคือการมองหาคอขวด

ฉันจะหาคอขวดได้อย่างไร โปร

วิธีที่ดีที่สุดในการประมวลผลโปรไฟล์จาวาสคริปต์คืออะไร?


3

ฉันพบว่าเวลาดำเนินการเป็นวิธีที่ดีที่สุด


เมื่อเทียบกับอะไร ฉันไม่แน่ใจว่าฉันเข้าใจ
Pekka

ตรงข้ามกับคำถามโปสเตอร์ดั้งเดิม: "รอบการใช้งาน CPU, การใช้หน่วยความจำ, เวลาดำเนินการ ฯลฯ "
snicker


2

ฉันมักจะเพียงแค่ทดสอบประสิทธิภาพของจาวาสคริปต์ระยะเวลาที่สคริปต์ทำงาน jQuery Lover ให้ลิงค์บทความที่ดีสำหรับการทดสอบประสิทธิภาพของรหัสจาวาสคริปต์แต่บทความจะแสดงวิธีทดสอบระยะเวลาที่รหัสจาวาสคริปต์ทำงาน ฉันขอแนะนำให้อ่านบทความที่เรียกว่า "5 เคล็ดลับในการปรับปรุงรหัส jQuery ของคุณขณะทำงานกับชุดข้อมูลขนาดใหญ่"


2

นี่คือคลาสที่สามารถใช้ซ้ำได้เพื่อประสิทธิภาพด้านเวลา ตัวอย่างรวมอยู่ในรหัส:

/*
     Help track time lapse - tells you the time difference between each "check()" and since the "start()"

 */
var TimeCapture = function () {
    var start = new Date().getTime();
    var last = start;
    var now = start;
    this.start = function () {
        start = new Date().getTime();
    };
    this.check = function (message) {
        now = (new Date().getTime());
        console.log(message, 'START:', now - start, 'LAST:', now - last);
        last = now;
    };
};

//Example:
var time = new TimeCapture();
//begin tracking time
time.start();
//...do stuff
time.check('say something here')//look at your console for output
//..do more stuff
time.check('say something else')//look at your console for output
//..do more stuff
time.check('say something else one more time')//look at your console for output

1

UX Profilerเข้าใกล้ปัญหานี้จากมุมมองของผู้ใช้ จัดกลุ่มกิจกรรมเบราว์เซอร์ทั้งหมดกิจกรรมเครือข่าย ฯลฯ ที่เกิดจากการกระทำของผู้ใช้ (คลิก) และคำนึงถึงทุกด้านเช่นเวลาแฝงเวลาหมดเวลาและอื่น ๆ


1

ฉันกำลังมองหาสิ่งที่คล้ายกัน แต่พบสิ่งนี้

https://jsbench.me/

จะช่วยให้การเปรียบเทียบแบบด้านต่อด้านและจากนั้นคุณสามารถแบ่งปันผลลัพธ์


0

กฎทองคือการไม่อยู่ภายใต้สถานการณ์ใด ๆ ที่ล็อคเบราว์เซอร์ผู้ใช้ของคุณ หลังจากนั้นฉันมักจะดูเวลาดำเนินการตามด้วยการใช้หน่วยความจำ (เว้นแต่ว่าคุณกำลังทำสิ่งที่บ้าในกรณีนี้อาจมีลำดับความสำคัญสูงกว่า)


0

การทดสอบประสิทธิภาพกลายเป็นสิ่งที่เป็นคำศัพท์ที่ล่าช้า แต่ก็ไม่ได้หมายความว่าการทดสอบประสิทธิภาพไม่ใช่กระบวนการที่สำคัญใน QA หรือแม้กระทั่งหลังจากที่สินค้าได้ส่งมอบ และในขณะที่ฉันพัฒนาแอพที่ฉันใช้เครื่องมือที่แตกต่างกันบางอย่างที่กล่าวมาข้างต้นเช่นchrome Profilerฉันมักจะมอง SaaS หรือโอเพนซอร์สที่ฉันสามารถไปและลืมเกี่ยวกับมันจนกว่าฉันจะได้รับการแจ้งเตือนว่ามีบางอย่างขึ้น .

มีเครื่องมือที่ยอดเยี่ยมมากมายที่จะช่วยให้คุณจับตาดูประสิทธิภาพโดยไม่ต้องกระโดดข้ามห่วงเพื่อรับการตั้งค่าการเตือนขั้นพื้นฐาน นี่คือบางสิ่งที่ฉันคิดว่าคุ้มค่าที่จะลองดูด้วยตัวคุณเอง

  1. Sematext.com
  2. Datadog.com
  3. Uptime.com
  4. Smartbear.com
  5. Solarwinds.com

หากต้องการลองและวาดภาพที่ชัดเจนยิ่งขึ้นนี่เป็นบทแนะนำเล็กน้อยเกี่ยวกับวิธีตั้งค่าการตรวจสอบสำหรับแอปพลิเคชันตอบโต้


-1

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

start = new Date().getTime(); 
for (var n = 0; n < maxCount; n++) {
/* perform the operation to be measured *//
}
elapsed = new Date().getTime() - start;
assert(true,"Measured time: " + elapsed);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.