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

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

2
เหตุใดจึงเร็วกว่าเพื่อตรวจสอบว่าพจนานุกรมมีรหัสหรือไม่แทนที่จะตรวจพบข้อยกเว้นในกรณีที่ไม่มี
ลองนึกภาพรหัส: public class obj { // elided } public static Dictionary<string, obj> dict = new Dictionary<string, obj>(); วิธีที่ 1 public static obj FromDict1(string name) { if (dict.ContainsKey(name)) { return dict[name]; } return null; } วิธีที่ 2 public static obj FromDict2(string name) { try { return dict[name]; } catch (KeyNotFoundException) { …

2
เหตุใดการประมวลผลอาร์เรย์ที่เรียงลำดับจึงช้ากว่าอาร์เรย์ที่ไม่เรียงลำดับ
ฉันมีรายการTuple<long,long,string>วัตถุที่สร้างขึ้นแบบสุ่มจำนวน 500,000 รายการซึ่งฉันกำลังค้นหา "ระหว่าง" อย่างง่าย: var data = new List<Tuple<long,long,string>>(500000); ... var cnt = data.Count(t => t.Item1 <= x && t.Item2 >= x); เมื่อฉันสร้างอาเรย์แบบสุ่มของฉันและทำการค้นหาค่าที่สร้างแบบสุ่ม 100 ค่าxการค้นหาจะเสร็จสมบูรณ์ในเวลาประมาณสี่วินาที การรู้ถึงสิ่งมหัศจรรย์ที่ยิ่งใหญ่ที่การเรียงลำดับมีผลต่อการค้นหาแต่ฉันตัดสินใจที่จะเรียงลำดับข้อมูลของฉัน - ก่อนItem1แล้วตามด้วยItem2และสุดท้ายItem3- ก่อนที่จะทำการค้นหา 100 ครั้ง ฉันคาดว่ารุ่นที่เรียงไว้จะทำงานได้เร็วขึ้นเล็กน้อยเนื่องจากการคาดเดาของสาขา: ความคิดของฉันคือเมื่อเราไปถึงจุดที่Item1 == xการตรวจสอบเพิ่มเติมทั้งหมดt.Item1 <= xจะทำนายสาขาอย่างถูกต้องว่า "ไม่รับ" เร่งส่วนหางของ ค้นหา. ฉันประหลาดใจมากการค้นหาใช้เวลานานเป็นสองเท่าในอาร์เรย์ที่เรียงลำดับ ! ฉันลองสลับไปมาตามลำดับที่ฉันรันการทดลองของฉันและใช้เมล็ดพันธุ์ที่แตกต่างกันสำหรับตัวสร้างตัวเลขสุ่ม แต่ผลที่ออกมานั้นเหมือนกัน: การค้นหาในอาเรย์ที่ไม่เรียงลำดับนั้นวิ่งเร็วกว่าการค้นหาในอาเรย์เดียวกันเกือบสองเท่า เรียง! ใครบ้างมีคำอธิบายที่ดีของผลแปลก ๆ นี้? …

12
การใช้ 'var' จะส่งผลกระทบต่อประสิทธิภาพหรือไม่
ก่อนหน้านี้ฉันถามคำถามเกี่ยวกับสาเหตุที่ฉันเห็นตัวอย่างมากมายที่ใช้varคำหลักและได้รับคำตอบว่าในขณะที่จำเป็นเฉพาะกับประเภทที่ไม่ระบุตัวตนเท่านั้น แต่มันถูกใช้เพื่อทำให้การเขียนโค้ด 'เร็วขึ้น' / ง่ายขึ้นและ 'เพียงเพราะ' ต่อไปนี้การเชื่อมโยงนี้ ( "C # 3.0 - Var ไม่ได้ objec")ผมเห็นว่าvarได้รับการรวบรวมลงไปชนิดที่ถูกต้องในอิลลินอยส์ (คุณจะเห็นมันเกี่ยวกับตรงกลางลงบทความ) คำถามของฉันคือยิ่งกว่านั้นหากมีรหัส IL ใช้varคำหลักนั้นและจะใกล้เคียงกับการวัดระดับประสิทธิภาพของรหัสหากมีการใช้ทุกที่หรือไม่
230 c#  performance  variables  var 

4
การใช้ 'อัตโนมัติ' ของ C ++ 11 สามารถปรับปรุงประสิทธิภาพได้หรือไม่
ฉันเห็นได้ว่าทำไมautoประเภทใน C ++ 11 ช่วยปรับปรุงความถูกต้องและการบำรุงรักษา ฉันอ่านแล้วว่ามันยังสามารถปรับปรุงประสิทธิภาพได้ ( เกือบจะอัตโนมัติทุกครั้งโดย Herb Sutter) แต่ฉันพลาดคำอธิบายที่ดี จะautoปรับปรุงประสิทธิภาพได้อย่างไร ใครสามารถยกตัวอย่างได้บ้าง
230 c++  performance  c++11  auto 

2
เหตุใดจึงมีผลกระทบอย่างมากเมื่อวนลูปมากกว่าอาร์เรย์ที่มี 240 องค์ประกอบขึ้นไป
เมื่อเรียกใช้ลูปผลรวมเหนืออาร์เรย์ใน Rust ฉันสังเกตเห็นว่าประสิทธิภาพลดลงอย่างมากเมื่อCAPACITY> = 240. CAPACITY= 239 เร็วกว่าประมาณ 80 เท่า มีการเพิ่มประสิทธิภาพการรวบรวมพิเศษสนิมกำลังทำสำหรับอาร์เรย์ "สั้น"? rustc -C opt-level=3รวบรวมกับ use std::time::Instant; const CAPACITY: usize = 240; const IN_LOOPS: usize = 500000; fn main() { let mut arr = [0; CAPACITY]; for i in 0..CAPACITY { arr[i] = i; } let mut sum = 0; …

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

8
สิ่งอันดับมีประสิทธิภาพมากกว่ารายการใน Python หรือไม่
มีความแตกต่างของประสิทธิภาพระหว่างสิ่งอันดับและรายการเมื่อพูดถึงการสร้างอินสแตนซ์และการดึงองค์ประกอบ?

4
เหตุใดการแนะนำคำแนะนำ MOV ที่ไร้ประโยชน์จะทำให้วงวนแน่นใน x86_64 ชุดประกอบ
พื้นหลัง: ในขณะที่เพิ่มประสิทธิภาพรหัสภาษาปาสคาลด้วยภาษาแอสเซมบลีที่ฝังตัวฉันสังเกตเห็นMOVคำสั่งที่ไม่จำเป็นและลบมันออก ที่แปลกใจของฉันเอาคำสั่งยกเลิกการจำเป็นที่เกิดจากโปรแกรมของฉันที่จะชะลอตัวลง ฉันพบว่าการเพิ่มMOVคำแนะนำแบบไม่มีประโยชน์เพิ่มประสิทธิภาพให้ดียิ่งขึ้น ผลที่ได้คือเอาแน่เอานอนและการเปลี่ยนแปลงตามลำดับการดำเนินการ: คำแนะนำขยะเดียวกันขนย้ายขึ้นหรือลงโดยบรรทัดเดียวผลิตชะลอตัว ฉันเข้าใจว่าซีพียูใช้การปรับแต่งและการทำให้เพรียวลมทุกชนิด แต่ดูเหมือนว่าจะเป็นเวทย์มนตร์ดำ ข้อมูล: รหัสของฉันในเวอร์ชันรวบรวมเงื่อนไขการทำงานของขยะสามครั้งในช่วงกลางของลูปที่รัน2**20==1048576ครั้ง (โปรแกรมที่อยู่รอบ ๆ เพียงแค่คำนวณแฮชSHA-256 ) ผลลัพธ์บนเครื่องที่ค่อนข้างเก่า (Intel (R) Core (TM) 2 CPU 6400 @ 2.13 GHz): avg time (ms) with -dJUNKOPS: 1822.84 ms avg time (ms) without: 1836.44 ms โปรแกรมถูกเรียกใช้ 25 ครั้งในการวนลูปโดยที่ลำดับการรันจะเปลี่ยนแบบสุ่มในแต่ละครั้ง ข้อความที่ตัดตอนมา: {$asmmode intel} procedure example_junkop_in_sha256; var s1, t2 : …

30
วิธีการค้นหาองค์ประกอบที่ใหญ่ที่สุด kth ในอาร์เรย์ที่มีความยาวไม่เรียงลำดับ n ใน O (n)?
ฉันเชื่อว่ามีวิธีการหาองค์ประกอบที่ใหญ่ที่สุด kth ในอาร์เรย์ที่มีความยาว n ใน O (n) หรืออาจเป็น "คาดหวัง" O (n) หรือบางสิ่งบางอย่าง เราจะทำสิ่งนี้ได้อย่างไร

3
ทำไมการโอนเมทริกซ์ที่ 512x512 ช้ากว่าการแปลงเมทริกซ์ที่ 513x513 มาก?
หลังจากทำการทดลองบางอย่างเกี่ยวกับเมทริกซ์จตุรัสที่มีขนาดต่างกันรูปแบบจะปรากฏขึ้น คงเส้นคงวาtransposing เมทริกซ์ที่มีขนาด2^nช้ากว่า transposing 2^n+1หนึ่งขนาด สำหรับค่าเล็กน้อยของnความแตกต่างไม่สำคัญ ความแตกต่างใหญ่เกิดขึ้นอย่างไรก็ตามค่า 512 (อย่างน้อยสำหรับฉัน) คำเตือน: ฉันรู้ว่าฟังก์ชั่นไม่ได้เปลี่ยนเมทริกซ์จริง ๆ เพราะการแลกเปลี่ยนสองครั้งขององค์ประกอบ แต่มันก็ไม่ต่าง ตามรหัส: #define SAMPLES 1000 #define MATSIZE 512 #include <time.h> #include <iostream> int mat[MATSIZE][MATSIZE]; void transpose() { for ( int i = 0 ; i < MATSIZE ; i++ ) for ( int j = 0 ; …

12
รวบรวมได้อย่างไรอย่างรวดเร็ว
ฉัน Googled และแหย่ไปที่เว็บไซต์ Go แต่ดูเหมือนว่าฉันจะไม่สามารถหาคำอธิบายสำหรับเวลาสร้างที่ไม่ธรรมดาของ Go พวกเขาเป็นผลิตภัณฑ์ของคุณสมบัติภาษา (หรือขาดมัน), คอมไพเลอร์เพิ่มประสิทธิภาพสูงหรืออย่างอื่น? ฉันไม่พยายามโปรโมตไป; ฉันแค่อยากรู้


24
String เทียบกับ StringBuilder
ฉันเข้าใจความแตกต่างระหว่างStringและStringBuilder( StringBuilderไม่แน่นอน) แต่มีประสิทธิภาพแตกต่างกันมากระหว่างทั้งสองหรือไม่ โปรแกรมที่ฉันกำลังใช้งานมีสตริงตัวเรือนจำนวนมากต่อท้าย (500+) ใช้StringBuilderตัวเลือกที่ดีกว่าไหม?
215 c#  .net  performance 

13
ฉันควรใช้ String.format () ของ Java หรือไม่หากประสิทธิภาพมีความสำคัญ
เราต้องสร้าง Strings ตลอดเวลาเพื่อบันทึกผลลัพธ์และอื่น ๆ ในเวอร์ชั่น JDK เราได้เรียนรู้ว่าเมื่อไรควรใช้StringBuffer(ผนวกหลายอัน, เธรดที่ปลอดภัย) และStringBuilder(ผนวกท้ายหลายอัน, ไม่ใช้เธรดที่ปลอดภัย) คำแนะนำในการใช้String.format()คืออะไร? มันมีประสิทธิภาพหรือไม่หรือเราถูกบังคับให้ติดกับการต่อข้อมูลสำหรับหนึ่ง liners ที่ประสิทธิภาพเป็นสิ่งสำคัญหรือไม่ เช่นแบบเก่าที่น่าเกลียด String s = "What do you get if you multiply " + varSix + " by " + varNine + "?"; เทียบกับรูปแบบใหม่ที่เป็นระเบียบ (String.format ซึ่งอาจช้ากว่า) String s = String.format("What do you get if you multiply %d …

11
ตัวแปร JavaScript ประกาศนอกหรือในวง?
ใน AS3 ฉันเชื่อว่าคุณควรเริ่มต้นตัวแปรทั้งหมดนอกลูปเพื่อประสิทธิภาพที่เพิ่มขึ้น เป็นกรณีนี้กับ JavaScript เช่นกัน? แบบไหนดีกว่า / เร็วกว่า / แนวปฏิบัติที่ดีที่สุด var value = 0; for (var i = 0; i < 100; i++) { value = somearray[i]; } หรือ for (var i = 0 ; i < 100; i++) { var value = somearray[i]; }

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