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

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

13
ใน C ++ ฉันควรกังวลกับตัวแปรแคชหรือให้คอมไพเลอร์ทำการปรับให้เหมาะสม? (นามแฝง)
พิจารณารหัสต่อไปนี้ ( pเป็นประเภทunsigned char*และbitmap->widthเป็นจำนวนเต็มบางประเภทซึ่งไม่ทราบแน่ชัดและขึ้นอยู่กับเวอร์ชันของไลบรารีภายนอกที่เราใช้): for (unsigned x = 0; x < static_cast<unsigned>(bitmap->width); ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } คุ้มไหมที่จะเพิ่มประสิทธิภาพ [.. ] มีบางกรณีไหมที่สามารถให้ผลลัพธ์ที่มีประสิทธิภาพมากขึ้นโดยการเขียน: unsigned width(static_cast<unsigned>(bitmap->width)); for (unsigned x = 0; x < width; ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } …

7
ลำดับของฟังก์ชัน LINQ มีความสำคัญหรือไม่?
โดยทั่วไปตามคำถามระบุว่า ... ลำดับของฟังก์ชัน LINQ มีความสำคัญในแง่ของประสิทธิภาพหรือไม่? เห็นได้ชัดว่าผลลัพธ์จะต้องเหมือนเดิม ... ตัวอย่าง: myCollection.OrderBy(item => item.CreatedDate).Where(item => item.Code > 3); myCollection.Where(item => item.Code > 3).OrderBy(item => item.CreatedDate); ทั้งสองให้ผลลัพธ์เดียวกันกับฉัน แต่อยู่ในลำดับ LINQ ที่แตกต่างกัน ฉันตระหนักดีว่าการจัดเรียงรายการบางรายการใหม่จะทำให้ได้ผลลัพธ์ที่แตกต่างกันและฉันไม่ได้กังวลเกี่ยวกับสิ่งเหล่านั้น สิ่งที่ฉันกังวลหลักคือการรู้ว่าในการได้ผลลัพธ์เดียวกันการสั่งซื้ออาจส่งผลต่อประสิทธิภาพหรือไม่ และไม่ใช่แค่ในการโทร 2 LINQ ที่ฉันโทร (OrderBy, Where) แต่ในการโทร LINQ ใด ๆ
114 c#  performance  linq 

9
เหตุใดการต่อสตริงจึงเร็วกว่าการรวมอาร์เรย์
วันนี้ฉันอ่านกระทู้นี้เกี่ยวกับความเร็วของการต่อสายอักขระ น่าแปลกที่การต่อสตริงเป็นผู้ชนะ: http://jsben.ch/#/OJ3vo ผลลัพธ์ตรงข้ามกับที่ฉันคิดไว้ นอกจากนี้ยังมีบทความจำนวนมากเกี่ยวกับเรื่องนี้ซึ่งอธิบายตรงข้ามเช่นนี้ ฉันเดาได้ว่าเบราว์เซอร์ได้รับการปรับให้เหมาะกับสตริงconcatในเวอร์ชันล่าสุด แต่จะทำได้อย่างไร เราสามารถพูดได้ว่ามันจะดีกว่าที่จะใช้+เมื่อเชื่อมต่อสตริง? ปรับปรุง ดังนั้นในการต่อสายอักขระในเบราว์เซอร์สมัยใหม่จึงได้รับการปรับให้เหมาะสมดังนั้นการใช้+เครื่องหมายจึงเร็วกว่าการใช้joinเมื่อคุณต้องการต่อสตริง แต่@Arthur ชี้ให้เห็นว่าjoinเร็วกว่าถ้าคุณต้องการเข้าร่วมสตริงด้วยตัวคั่น อัปเดต - 2020 Chrome: Array joinเกือบจะ2 times fasterเป็น String concat + See: https://stackoverflow.com/a/54970240/984471 หมายเหตุ: อาร์เรย์joinจะดีกว่าถ้าคุณมีlarge strings หากเราต้องการสร้างseveral small stringsในผลลัพธ์สุดท้ายจะเป็นการดีกว่าที่จะใช้การต่อสตริง+เนื่องจากมิฉะนั้นการใช้ Array จะต้องมีการแปลง Array to String หลายรายการในตอนท้ายซึ่งเป็นประสิทธิภาพที่เกินพิกัด

5
RelativeLayout แพงกว่า LinearLayout หรือไม่?
ฉันใช้ RelativeLayout มาโดยตลอดทุกครั้งที่ฉันต้องการ View container เพราะมันมีความยืดหยุ่นแม้ว่าฉันจะต้องการแสดงสิ่งที่เรียบง่ายจริงๆก็ตาม สามารถทำได้หรือไม่หรือฉันควรลองใช้ LinearLayout เมื่อทำได้จากมุมมองด้านประสิทธิภาพ / แนวปฏิบัติที่ดี ขอบคุณ!

10
ประสิทธิภาพของ IPC: ชื่อว่า Pipe vs Socket
ดูเหมือนทุกคนจะบอกว่าท่อที่ตั้งชื่อนั้นเร็วกว่าซ็อกเก็ต IPC พวกเขาเร็วแค่ไหน? ฉันต้องการใช้ซ็อกเก็ตเพราะสามารถสื่อสารสองทางได้และมีความยืดหยุ่นมาก แต่จะเลือกความเร็วมากกว่าความยืดหยุ่นหากเป็นจำนวนมาก

4
การใช้นิพจน์แลมบ์ดาสำหรับตัวจัดการเหตุการณ์
ขณะนี้ฉันมีเพจที่ประกาศไว้ดังนี้: public partial class MyPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //snip MyButton.Click += (o, i) => { //snip } } } ฉันเพิ่งย้ายไปที่. NET 3.5 จาก 1.1 ฉันจึงคุ้นเคยกับการเขียนตัวจัดการเหตุการณ์นอก Page_Load คำถามของฉันคือ; มีข้อบกพร่องด้านประสิทธิภาพหรือข้อผิดพลาดใด ๆ ที่ฉันควรระวังเมื่อใช้วิธีแลมบ์ดาสำหรับสิ่งนี้หรือไม่? ฉันชอบเพราะมันกระชับกว่า แต่ฉันไม่ต้องการเสียสละประสิทธิภาพเพื่อใช้มัน ขอบคุณ
114 c#  performance  events  lambda 

3
เหตุใดทิศทางของดัชนีจึงมีความสำคัญใน MongoDB
ในการอ้างอิงเอกสาร : เมื่อสร้างดัชนีตัวเลขที่เชื่อมโยงกับคีย์จะระบุทิศทางของดัชนีดังนั้นควรเป็น 1 (จากน้อยไปมาก) หรือ -1 (จากมากไปหาน้อย) เสมอ ทิศทางไม่สำคัญสำหรับดัชนีคีย์เดียวหรือสำหรับการดึงการเข้าถึงแบบสุ่ม แต่มีความสำคัญหากคุณกำลังทำแบบสอบถามประเภทหรือช่วงในดัชนีผสม อย่างไรก็ตามฉันไม่เห็นเหตุผลว่าทำไมทิศทางของดัชนีจึงมีความสำคัญกับดัชนีผสม ใครช่วยให้คำอธิบายเพิ่มเติม (หรือตัวอย่าง) ได้ไหม

8
ตารางแฮชสามารถเป็น O (1) ได้หรือไม่?
ดูเหมือนจะเป็นความรู้ทั่วไปที่ตารางแฮชสามารถบรรลุ O (1) ได้ แต่นั่นไม่เคยมีเหตุผลสำหรับฉัน ใครช่วยอธิบายหน่อยได้ไหม นี่คือสองสถานการณ์ที่อยู่ในใจ: A. ค่าเป็น int ที่เล็กกว่าขนาดของตารางแฮช ดังนั้นค่าจึงเป็นแฮชของตัวเองดังนั้นจึงไม่มีตารางแฮช แต่ถ้ามีก็จะเป็น O (1) และยังไม่มีประสิทธิภาพ B. คุณต้องคำนวณแฮชของค่า ในสถานการณ์นี้ลำดับคือ O (n) สำหรับขนาดของข้อมูลที่กำลังค้นหา การค้นหาอาจเป็น O (1) หลังจากที่คุณทำงาน O (n) แต่ก็ยังคงออกมาสู่ O (n) ในสายตาของฉัน และเว้นแต่คุณจะมีแฮชที่สมบูรณ์แบบหรือตารางแฮชขนาดใหญ่อาจมีหลายรายการต่อถัง ดังนั้นมันจึงกลายเป็นการค้นหาเชิงเส้นเล็ก ๆ ในบางจุดอยู่ดี ฉันคิดว่าตารางแฮชนั้นยอดเยี่ยม แต่ฉันไม่ได้รับการกำหนด O (1) เว้นแต่จะเป็นเพียงทฤษฎีเท่านั้น บทความของ Wikipedia สำหรับตารางแฮชอ้างอิงเวลาในการค้นหาคงที่อย่างสม่ำเสมอและไม่สนใจค่าใช้จ่ายของฟังก์ชันแฮชโดยสิ้นเชิง นั่นเป็นมาตรการที่ยุติธรรมจริงหรือ? แก้ไข:เพื่อสรุปสิ่งที่ฉันเรียนรู้: เป็นความจริงในทางเทคนิคเนื่องจากฟังก์ชันแฮชไม่จำเป็นต้องใช้ข้อมูลทั้งหมดในคีย์และอาจเป็นเวลาที่คงที่และเนื่องจากตารางที่มีขนาดใหญ่เพียงพอสามารถทำให้การชนกันลงไปใกล้เวลาคงที่ มันเป็นความจริงในทางปฏิบัติเพราะเมื่อเวลาผ่านไปมันจะใช้งานได้ตราบเท่าที่ฟังก์ชันแฮชและขนาดตารางถูกเลือกเพื่อลดการชนกันแม้ว่านั่นมักจะหมายถึงการไม่ใช้ฟังก์ชันแฮชเวลาคงที่

4
ดัชนีคอลัมน์เดียวสองรายการเทียบกับดัชนีสองคอลัมน์หนึ่งรายการใน MySQL?
ฉันต้องเผชิญกับสิ่งต่อไปนี้และไม่แน่ใจว่าแนวทางปฏิบัติที่ดีที่สุดคืออะไร พิจารณาตารางต่อไปนี้ (ซึ่งจะมีขนาดใหญ่): id PK | giver_id FK | ผู้รับ _id FK | วันที่ ฉันใช้ InnoDB และจากสิ่งที่ฉันเข้าใจมันสร้างดัชนีโดยอัตโนมัติสำหรับคอลัมน์คีย์ต่างประเทศสองคอลัมน์ อย่างไรก็ตามฉันจะทำการค้นหามากมายที่ฉันต้องการจับคู่ชุดค่าผสมเฉพาะของ: SELECT...WHERE giver_id = x AND recipient_id = t. ชุดค่าผสมแต่ละชุดจะไม่ซ้ำกันในตาราง มีประโยชน์จากการเพิ่มดัชนีสองคอลัมน์บนคอลัมน์เหล่านี้หรือไม่หรือดัชนีสองตัวในทางทฤษฎีจะเพียงพอ / เหมือนกันหรือไม่?

3
การแก้ไขสตริงเทียบกับสตริงรูปแบบ
มีความแตกต่างของประสิทธิภาพที่สังเกตได้ระหว่างการใช้การแก้ไขสตริง: myString += $"{x:x2}"; เทียบกับ String.Format ()? myString += String.Format("{0:x2}", x); ฉันแค่ถามเพราะ Resharper กำลังแจ้งการแก้ไขและฉันเคยโดนหลอกมาก่อน

10
จะใช้อะไรดีกว่าใน PHP, $ array [] = $ value หรือ array_push ($ array, $ value)?
จะมีอะไรดีไปกว่าการใช้ PHP ในการต่อท้ายสมาชิกอาร์เรย์ $array[] = $value; หรือ array_push($array, $value); ? แม้ว่าคู่มือจะบอกว่าคุณควรหลีกเลี่ยงการเรียกใช้ฟังก์ชันดีกว่า แต่ฉันก็อ่าน$array[]ช้ากว่าarray_push()มาก มีคำชี้แจงหรือเกณฑ์มาตรฐานอะไรบ้าง?
113 php  arrays  performance 

10
ความสำคัญของความยาว varchar ในตาราง MySQL
ฉันมีตาราง MySQL ที่แทรกแถวแบบไดนามิก เนื่องจากฉันไม่สามารถมั่นใจได้ถึงความยาวของสตริงและไม่ต้องการให้ตัดออกฉันจึงสร้างมันเป็น varchar (200) ซึ่งโดยทั่วไปแล้วจะใหญ่กว่าที่ฉันต้องการมาก มีประสิทธิภาพที่ยอดเยี่ยมในการให้ฟิลด์ varchar ยาวเกินความจำเป็นหรือไม่?
113 sql  mysql  performance  types 

3
ฉันจะเลือกขนาดกริดและบล็อกสำหรับเมล็ด CUDA ได้อย่างไร
นี่เป็นคำถามเกี่ยวกับวิธีกำหนดขนาดกริดบล็อกและเธรด CUDA นี่เป็นคำถามที่เพิ่มเติมให้กับคนที่โพสต์ที่นี่ ตามลิงค์นี้คำตอบจากกรงเล็บมีข้อมูลโค้ด (ดูด้านล่าง) ฉันไม่เข้าใจความคิดเห็น "ค่ามักจะถูกเลือกโดยการปรับแต่งและข้อ จำกัด ของฮาร์ดแวร์" ฉันไม่พบคำอธิบายที่ดีหรือคำชี้แจงที่อธิบายเรื่องนี้ในเอกสาร CUDA โดยสรุปคำถามของฉันคือวิธีกำหนดblocksize(จำนวนเธรด) ที่เหมาะสมที่สุดโดยใช้รหัสต่อไปนี้: const int n = 128 * 1024; int blocksize = 512; // value usually chosen by tuning and hardware constraints int nblocks = n / nthreads; // value determine by block size and total work madd<<<nblocks,blocksize>>>mAdd(A,B,C,n);


5
ถ้าเทียบกับ Switch Speed
โดยทั่วไปคำสั่ง Switch จะเร็วกว่าคำสั่ง if-else-if ที่เทียบเท่า (เช่นอธิบายไว้ในบทความนี้ ) เนื่องจากการปรับแต่งคอมไพลเลอร์ การเพิ่มประสิทธิภาพนี้ทำงานอย่างไร ใครมีคำอธิบายดีๆ

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