คำถามติดแท็ก performance

สำหรับคำถามที่เกี่ยวข้องกับการวัดหรือปรับปรุงรหัสและประสิทธิภาพการใช้งาน

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

8
LINQ: ไม่ vs ไม่ได้ทั้งหมด
บ่อยครั้งที่ฉันต้องการตรวจสอบว่าค่าที่มีให้ตรงกับหนึ่งในรายการ (เช่นเมื่อตรวจสอบ): if (!acceptedValues.Any(v => v == someValue)) { // exception logic } เมื่อเร็ว ๆ นี้ฉันสังเกตเห็น ReSharper ขอให้ฉันทำแบบสอบถามเหล่านี้ให้ง่ายขึ้น: if (acceptedValues.All(v => v != someValue)) { // exception logic } เห็นได้ชัดว่ามันเหมือนกันในเชิงตรรกะบางทีอาจจะอ่านได้มากกว่าเล็กน้อย (ถ้าคุณทำคณิตศาสตร์มามาก) คำถามของฉันคือ: สิ่งนี้ส่งผลให้เกิดผลงานหรือไม่? มันให้ความรู้สึกเหมือนว่ามันควรจะ (เช่น.Any()ฟังดูเหมือนมันจะลัดวงจรในขณะที่.All()ดูเหมือนว่ามันจะไม่ได้) แต่ฉันไม่มีอะไรจะพิสูจน์เรื่องนี้ ไม่มีใครมีความรู้ในเชิงลึกเกี่ยวกับคำถามที่ว่าจะแก้ไขเหมือนเดิมหรือไม่หรือ ReSharper ทำให้ฉันหลงทาง?
272 c#  .net  performance  linq  resharper 

11
อะไรบล็อก Ruby, Python เพื่อให้ได้ความเร็ว Javascript V8? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน5 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ มีคุณสมบัติ Ruby / Python ที่บล็อกการใช้งานการเพิ่มประสิทธิภาพ (เช่นการแคชแบบอินไลน์ ) V8 engine มีหรือไม่? Python ได้รับการพัฒนาโดย Google ร่วมกันดังนั้นจึงไม่ควรถูกบล็อกโดยสิทธิบัตรซอฟต์แวร์ หรือนี่เป็นเรื่องของทรัพยากรที่ใส่ลงในโครงการ V8 โดย Google

9
INNER JOIN เทียบกับประสิทธิภาพ LEFT JOIN ใน SQL Server
ฉันได้สร้างคำสั่ง SQL ที่ใช้ INNER JOIN ใน 9 ตารางแล้วคำสั่งนี้ใช้เวลานานมาก (มากกว่าห้านาที) ดังนั้นชาวบ้านของฉันแนะนำให้ฉันเปลี่ยน INNER JOIN เป็น LEFT JOIN เพราะการแสดงของ LEFT JOIN ดีกว่าแม้ว่าฉันจะรู้ หลังจากที่ฉันเปลี่ยนความเร็วของการสืบค้นก็เพิ่มขึ้นอย่างมาก ฉันอยากรู้ว่าทำไม LEFT JOIN ถึงเร็วกว่า ININ JOIN คำสั่ง SQL ของฉันมีลักษณะดังนี้: SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN Dเป็นต้น อัปเดต: นี่เป็นบทสรุปของสคีมาของฉัน FROM sidisaleshdrmly …


12
SQL Server: ค้นหาอย่างรวดเร็ว แต่ช้าจากขั้นตอน
แบบสอบถามทำงานเร็ว: DECLARE @SessionGUID uniqueidentifier SET @SessionGUID = 'BCBA333C-B6A1-4155-9833-C495F22EA908' SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank ค่าใช้จ่ายย่อย: 0.502 แต่การวาง SQL ตัวเดียวกันในโพรซีเดอร์ที่เก็บไว้จะรันช้าและด้วยแผนการดำเนินการที่แตกต่างกันโดยสิ้นเชิง CREATE PROCEDURE dbo.ViewOpener @SessionGUID uniqueidentifier AS SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank EXECUTE ViewOpener @SessionGUID ราคาย่อย: 19.2 ฉันวิ่ง sp_recompile …

6
ส่วนใดของการโยนข้อยกเว้นมีราคาแพง
ใน Java การใช้ throw / catch เป็นส่วนหนึ่งของตรรกะเมื่อไม่มีข้อผิดพลาดจริง ๆ แล้วเป็นความคิดที่ไม่ดี (ส่วนหนึ่ง) เนื่องจากการขว้างและจับข้อยกเว้นนั้นมีราคาแพงและการทำมันหลายครั้งในลูปมักจะช้ากว่าคนอื่น โครงสร้างการควบคุมที่ไม่เกี่ยวข้องกับการโยนข้อยกเว้น คำถามของฉันคือมีค่าใช้จ่ายเกิดขึ้นในการโยน / จับเองหรือเมื่อสร้างออบเจ็กต์ข้อยกเว้น (เนื่องจากได้รับข้อมูลรันไทม์จำนวนมากรวมถึงสแต็กการเรียกใช้งาน) กล่าวอีกนัยหนึ่งถ้าฉันทำ Exception e = new Exception(); แต่อย่าโยนมันเป็นค่าใช้จ่ายส่วนใหญ่ของการขว้างปาหรือการโยนและการจับเป็นสิ่งที่มีค่าใช้จ่ายสูงหรือไม่ ฉันไม่ได้ถามว่าการวางรหัสในบล็อกแบบลอง / จับเพิ่มค่าใช้จ่ายในการดำเนินการรหัสนั้นหรือไม่ฉันกำลังถามว่าการจับข้อยกเว้นเป็นส่วนที่มีราคาแพงหรือการสร้าง (เรียกตัวสร้างสำหรับ) ข้อยกเว้นเป็นส่วนที่มีราคาแพง . อีกวิธีหนึ่งในการถามนี้คือถ้าฉันทำตัวอย่างข้อยกเว้นแล้วขว้างและจับมันซ้ำแล้วซ้ำอีกนั่นจะเร็วกว่าการสร้างข้อยกเว้นใหม่ทุกครั้งที่ฉันโยนหรือไม่

9
ทำไม JSF เรียก getters หลายครั้ง
สมมติว่าฉันระบุองค์ประกอบ outputText ดังนี้: <h:outputText value="#{ManagedBean.someProperty}"/> ถ้าฉันพิมพ์ข้อความบันทึกเมื่อเรียกใช้ getter somePropertyและโหลดเพจมันเป็นเรื่องเล็กน้อยที่จะสังเกตเห็นว่ามีการเรียกใช้ getter มากกว่าหนึ่งครั้งต่อการร้องขอ (สองหรือสามครั้งเป็นสิ่งที่เกิดขึ้นในกรณีของฉัน): DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property หากมูลค่าของ somePropertyการคำนวณนั้นมีราคาแพงอาจเป็นปัญหาได้ ฉัน googled เล็กน้อยและคิดว่านี่เป็นปัญหาที่ทราบแล้ว วิธีแก้ไขปัญหาหนึ่งคือการรวมการตรวจสอบและดูว่ามีการคำนวณแล้วหรือไม่: private String someProperty; public String getSomeProperty() { if (this.someProperty == null) { this.someProperty = this.calculatePropertyValue(); } return …
256 performance  jsf  el  getter 

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

3
MySQL INSERT INTO VALUES .. เทียบกับ INSERT INTO SET SET
ความแตกต่างหลักระหว่างINSERT INTO table VALUES ..และ INSERT INTO table SETคืออะไร? ตัวอย่าง: INSERT INTO table (a, b, c) VALUES (1,2,3) INSERT INTO table SET a=1, b=2, c=3 แล้วประสิทธิภาพของสองสิ่งนี้ล่ะ?
252 sql  mysql  performance 

4
ทำให้คำสั่ง SQL ที่ตรงเป้าหมายคืออะไร?
ตามคำจำกัดความ (อย่างน้อยจากสิ่งที่ฉันเห็น) หมายถึงการที่สามารถระบุได้ว่าการสืบค้นมีความสามารถในการทำให้เอ็นจินการสืบค้นปรับแผนการดำเนินการที่เคียวรีใช้ให้เหมาะสม ฉันพยายามค้นหาคำตอบ แต่ดูเหมือนจะไม่มากในประเด็น ดังนั้นคำถามคืออะไรหรือไม่ทำให้แบบสอบถาม SQL sargable? เอกสารใด ๆ ที่จะได้รับการชื่นชมอย่างมาก สำหรับการอ้างอิง: SARGable

13
วิธีที่มีประสิทธิภาพมากที่สุดในการทดสอบช่วงจำนวนเต็มสองช่วงสำหรับการทับซ้อนคืออะไร
เมื่อกำหนดจำนวนเต็มสองช่วง [x1: x2] และ [y1: y2] โดยที่ x1 ≤ x2 และ y1 ≤ y2 วิธีที่มีประสิทธิภาพมากที่สุดในการทดสอบว่ามีการทับซ้อนกันของช่วงใดหรือไม่ ใช้งานง่ายมีดังนี้: bool testOverlap(int x1, int x2, int y1, int y2) { return (x1 >= y1 && x1 <= y2) || (x2 >= y1 && x2 <= y2) || (y1 >= x1 && y1 <= x2) …

10
มีประสิทธิภาพมากขึ้นคืออะไร: พจนานุกรม TryGetValue หรือมีคีย์ + รายการ
จากรายการของ MSDN ในDictionary.TryGetValue วิธีการ : วิธีนี้รวมการทำงานของวิธีการที่มีKeyKeyและคุณสมบัติของรายการ หากไม่พบคีย์จากนั้นพารามิเตอร์ค่าจะได้รับค่าเริ่มต้นที่เหมาะสมสำหรับประเภทค่า TValue; ตัวอย่างเช่น 0 (ศูนย์) สำหรับประเภทจำนวนเต็ม false สำหรับประเภทบูลีนและ null สำหรับประเภทอ้างอิง ใช้วิธี TryGetValue หากรหัสของคุณพยายามเข้าถึงคีย์ที่ไม่ได้อยู่ในพจนานุกรมบ่อยครั้ง การใช้วิธีนี้มีประสิทธิภาพมากกว่าการจับ KeyNotFoundException ที่ส่งออกมาโดยคุณสมบัติ Item วิธีนี้ใช้วิธีการ O (1) จากคำอธิบายมันไม่ชัดเจนว่ามันมีประสิทธิภาพมากขึ้นหรือสะดวกกว่าการโทรไปที่ containKey แล้วทำการค้นหา การใช้งานTryGetValueเพียงแค่เรียกประกอบด้วย Keyk และจากนั้นรายการหรือจริง ๆ แล้วมีประสิทธิภาพมากกว่านั้นโดยทำการค้นหาเดียว? กล่าวอีกนัยหนึ่งคืออะไรมีประสิทธิภาพมากขึ้น (เช่นที่หนึ่งทำการค้นหาน้อยกว่า): Dictionary<int,int> dict; //...// int ival; if(dict.ContainsKey(ikey)) { ival = dict[ikey]; } else { ival …

18
ทำให้ตัวจำลอง Android ทำงานได้เร็วขึ้น
ตัวเลียนแบบ Android นั้นค่อนข้างเชื่องช้า สำหรับอุปกรณ์บางอย่างเช่น Motorola Droid และ Nexus One แอพจะทำงานได้เร็วกว่าในอุปกรณ์จริงมากกว่าตัวจำลอง นี่เป็นปัญหาเมื่อทดสอบเกมและเอฟเฟกต์ภาพ คุณทำให้ตัวจำลองรันเร็วที่สุดเท่าที่จะทำได้ได้อย่างไร ฉันเล่นกับพารามิเตอร์ แต่ไม่พบการกำหนดค่าที่แสดงการปรับปรุงที่เห็นได้ชัดเจน

23
วิธีที่เร็วที่สุดในการวนซ้ำอาร์เรย์ใน JavaScript คืออะไร
ฉันเรียนรู้จากหนังสือที่คุณควรเขียนให้เหมือนกัน: for(var i=0, len=arr.length; i < len; i++){ // blah blah } ดังนั้นarr.lengthจะไม่ถูกคำนวณในแต่ละครั้ง คนอื่นพูดว่าคอมไพเลอร์จะทำการปรับให้เหมาะสมเพื่อให้คุณสามารถเขียน: for(var i=0; i < arr.length; i++){ // blah blah } ฉันแค่อยากรู้ว่าวิธีไหนดีที่สุดในการฝึก?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.