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

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

30
วิธีที่ดีที่สุดในการย้อนกลับสตริง
ฉันแค่ต้องเขียนฟังก์ชั่นกลับสตริงใน C # 2.0 (เช่น LINQ ไม่พร้อมใช้งาน) และมากับสิ่งนี้: public string Reverse(string text) { char[] cArray = text.ToCharArray(); string reverse = String.Empty; for (int i = cArray.Length - 1; i > -1; i--) { reverse += cArray[i]; } return reverse; } โดยส่วนตัวฉันไม่ได้คลั่งไคล้ฟังก์ชั่นและเชื่อว่ามีวิธีที่ดีกว่าในการทำมัน มีอะไรบ้าง

9
วิธีการระบุคำจำกัดความ css ที่ไม่ได้ใช้
มีวิธีการที่ดีในการช่วยระบุคำจำกัดความ css ที่ไม่ได้ใช้ในโครงการหรือไม่? ไฟล์ css จำนวนมากถูกดึงเข้ามาและตอนนี้ฉันกำลังพยายามล้างสิ่งต่าง ๆ ให้น้อยลง

5
ทำไม (a * b! = 0) เร็วกว่า (a! = 0 && b! = 0) ใน Java
ฉันกำลังเขียนโค้ดบางส่วนใน Java ที่ ณ จุดหนึ่งการไหลของโปรแกรมจะถูกกำหนดโดยตัวแปร int สองตัวคือ "a" และ "b" ไม่ใช่ศูนย์ (หมายเหตุ: a และ b ไม่เคยเป็นลบและ ไม่เคยอยู่ในช่วงล้นจำนวนเต็ม) ฉันสามารถประเมินด้วย if (a != 0 && b != 0) { /* Some code */ } หรืออีกวิธีหนึ่ง if (a*b != 0) { /* Some code */ } เนื่องจากฉันคาดหวังว่าโค้ดส่วนนั้นจะวิ่งนับล้านครั้งต่อการวิ่งฉันจึงสงสัยว่าอันไหนจะเร็วกว่า ฉันทำการทดลองโดยการเปรียบเทียบพวกมันกับอาเรย์ที่สร้างขึ้นแบบสุ่มขนาดใหญ่และฉันก็อยากรู้ว่าสเปร์ตี้ของอาเรย์ (เศษส่วนของข้อมูล = 0) จะส่งผลต่อผลลัพธ์อย่างไร: long …

23
Fortran ง่ายกว่าการปรับให้เหมาะสมกว่า C สำหรับการคำนวณจำนวนมากหรือไม่
บางครั้งฉันอ่านว่า Fortran นั้นหรือเร็วกว่า C สำหรับการคำนวณหนัก เป็นเรื่องจริงเหรอ? ฉันต้องยอมรับว่าฉันแทบจะไม่รู้จัก Fortran แต่รหัส Fortran ที่ฉันเคยเห็นไม่ได้แสดงว่าภาษานั้นมีคุณสมบัติที่ C ไม่มีอยู่ หากเป็นจริงโปรดบอกฉันว่าทำไม โปรดอย่าบอกฉันว่าภาษาหรือ libs ดีสำหรับการหยุดหมายเลขฉันไม่ต้องการเขียนแอปหรือ lib เพื่อทำสิ่งนั้นฉันแค่อยากรู้
410 c  performance  fortran 

12
HashSet กับประสิทธิภาพของรายการ
เป็นที่ชัดเจนว่าประสิทธิภาพการค้นหาของHashSet<T>คลาสทั่วไปสูงกว่าList<T>คลาสทั่วไป เพียงเปรียบเทียบคีย์แฮชที่ใช้กับวิธีการเชิงเส้นในList<T>ชั้นเรียน อย่างไรก็ตามการคำนวณคีย์กัญชาตัวเองอาจใช้เวลารอบการทำงานบางอย่างเพื่อให้สำหรับจำนวนเงินที่เล็ก ๆ HashSet<T>ของรายการที่ค้นหาเชิงเส้นสามารถเป็นทางเลือกที่แท้จริงในการ คำถามของฉัน: จุดคุ้มทุนอยู่ที่ไหน เพื่อให้สถานการณ์ง่ายขึ้น (และยุติธรรม) สมมติว่าList<T>คลาสใช้Equals()วิธีการขององค์ประกอบเพื่อระบุรายการ

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

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

6
วิธีที่เร็วที่สุดในการพิจารณาว่าจำนวนเต็มอยู่ระหว่างสองจำนวนเต็ม (รวม) กับชุดของค่าที่ทราบ
มีวิธีเร็วกว่าx >= start && x <= endใน C หรือ C ++ เพื่อทดสอบว่าจำนวนเต็มอยู่ระหว่างสองจำนวนเต็ม? อัปเดต : แพลตฟอร์มเฉพาะของฉันคือ iOS นี่เป็นส่วนหนึ่งของฟังก์ชันเบลอเบลอที่ จำกัด พิกเซลไว้ที่วงกลมในสี่เหลี่ยมจัตุรัสที่กำหนด UPDATE : หลังจากที่พยายามตอบรับผมได้มีคำสั่งเพิ่มความเร็วขนาดในหนึ่งบรรทัดของรหัสมากกว่าทำมันปกติx >= start && x <= endทาง UPDATE : นี่คือโค้ดหลังและก่อนหน้ากับแอสเซมเบลอร์จาก XCode: วิธีการใหม่ // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: …
389 c++  c  performance  math 

12
มีข้อดีของการใช้แผนที่บน unordered_map ในกรณีที่เป็นกุญแจสำคัญหรือไม่?
การพูดคุยเมื่อไม่นานมานี้unordered_mapใน C ++ ทำให้ฉันรู้ว่าฉันควรใช้unordered_mapกับกรณีส่วนใหญ่ที่ฉันเคยใช้มาmapก่อนเนื่องจากประสิทธิภาพของการค้นหา ( ตัดจำหน่าย O (1)เทียบกับO (log n ) เวลาส่วนใหญ่ที่ฉันใช้แผนที่ฉันใช้อย่างใดอย่างหนึ่งintหรือstd::stringเป็นชนิดคีย์ ดังนั้นฉันไม่มีปัญหากับนิยามของฟังก์ชันแฮช ยิ่งฉันคิดถึงมันมากเท่าไรฉันก็ยิ่งรู้ว่าฉันไม่สามารถหาเหตุผลในการใช้ปุ่มstd::mapa std::unordered_mapในกรณีของปุ่มที่มีประเภทง่าย ๆ ได้ - ฉันดูที่อินเตอร์เฟสและไม่พบสิ่งใดเลย ความแตกต่างที่สำคัญที่จะส่งผลกระทบต่อรหัสของฉัน ดังนั้นคำถาม: มีเหตุผลที่แท้จริงที่จะใช้std::mapมากกว่าstd::unordered_mapในกรณีของประเภทง่ายเช่นintและstd::string? ฉันขอจากมุมมองการเขียนโปรแกรมอย่างเคร่งครัด - ฉันรู้ว่ามันไม่ได้พิจารณาอย่างเต็มที่มาตรฐานและอาจก่อให้เกิดปัญหากับการย้าย นอกจากนี้ฉันคาดหวังว่าหนึ่งในคำตอบที่ถูกต้องอาจเป็น"มันมีประสิทธิภาพมากกว่าสำหรับชุดข้อมูลขนาดเล็ก"เนื่องจากมีค่าใช้จ่ายน้อย (นั่นเป็นเรื่องจริงหรือ?) - ดังนั้นฉันจึงต้องการ จำกัด คำถามให้กับกรณีที่จำนวน คีย์นั้นไม่สำคัญ (> 1 024) แก้ไข: duh ฉันลืมชัดเจน (ขอบคุณ GMan!) - ใช่แผนที่ได้รับคำสั่งแน่นอน - ฉันรู้แล้วและกำลังมองหาเหตุผลอื่น

22
HTTP กับประสิทธิภาพ HTTPS
มีความแตกต่างที่สำคัญในประสิทธิภาพระหว่าง http และ https หรือไม่ ฉันดูเหมือนจะจำได้ว่าการอ่าน HTTPS นั้นอาจเร็วถึงห้าเท่าของ HTTP สิ่งนี้ใช้ได้กับ webservers / browser รุ่นปัจจุบันหรือไม่? ถ้ามีจะมีสมุดปกขาวให้สนับสนุนไหม?
363 performance  http  https 

7
ทำไมลำดับของลูปจึงมีผลต่อประสิทธิภาพเมื่อทำการวนซ้ำในอาร์เรย์ 2 มิติ
ด้านล่างนี้เป็นสองโปรแกรมที่เกือบเหมือนกันยกเว้นว่าฉันได้เปลี่ยนiและjตัวแปร พวกเขาทั้งสองทำงานในเวลาต่างกัน มีคนอธิบายได้ไหมว่าทำไมสิ่งนี้ถึงเกิดขึ้น รุ่น 1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } เวอร์ชัน 2 #include <stdio.h> #include <stdlib.h> main …

16
มุมมองนั้นเร็วกว่าคิวรีธรรมดาหรือไม่?
คือ select * from myView เร็วกว่าแบบสอบถามเพื่อสร้างมุมมอง (เพื่อให้มีชุดผลลัพธ์เดียวกัน): select * from ([query to create same resultSet as myView]) ? มันไม่ชัดเจนเลยสำหรับฉันถ้ามุมมองใช้การแคชบางประเภททำให้เร็วขึ้นเมื่อเทียบกับแบบสอบถามแบบง่าย

7
การจัดการคำเตือนสำหรับการนับ IEnumerable ที่เป็นไปได้หลายรายการ
ในรหัสของฉันจำเป็นต้องใช้IEnumerable<>หลายครั้งจึงได้รับข้อผิดพลาด Resharper ของ "เป็นไปได้หลายการนับIEnumerable" รหัสตัวอย่าง: public List<object> Foo(IEnumerable<object> objects) { if (objects == null || !objects.Any()) throw new ArgumentException(); var firstObject = objects.First(); var list = DoSomeThing(firstObject); var secondList = DoSomeThingElse(objects); list.AddRange(secondList); return list; } ฉันสามารถเปลี่ยนobjectsพารามิเตอร์ให้เป็นListแล้วหลีกเลี่ยงการนับหลายที่เป็นไปได้ แต่จากนั้นฉันไม่ได้รับวัตถุสูงสุดที่ฉันสามารถจัดการได้ สิ่งที่ฉันสามารถทำได้ก็คือการแปลงIEnumerableไปListที่จุดเริ่มต้นของวิธีการ: public List<object> Foo(IEnumerable<object> objects) { var objectList = objects.ToList(); // ... } …

7
ฐานข้อมูลเข้าร่วมเมื่อใดและเพราะเหตุใด
ฉันกำลังทำการวิจัยในฐานข้อมูลและฉันกำลังดูข้อ จำกัด บางประการของฐานข้อมูลเชิงสัมพันธ์ ฉันได้รับการรวมโต๊ะขนาดใหญ่นั้นแพงมาก แต่ฉันไม่แน่ใจว่าทำไม DBMS ต้องทำอะไรเพื่อดำเนินการเข้าร่วมคอขวดอยู่ที่ไหน การปรับสภาพให้เป็นกลางสามารถช่วยเอาชนะค่าใช้จ่ายนี้ได้อย่างไร เทคนิคการปรับให้เหมาะสมอื่น ๆ (ตัวอย่างเช่นการจัดทำดัชนี) ช่วยได้อย่างไร? ยินดีต้อนรับประสบการณ์ส่วนตัว! หากคุณกำลังจะโพสต์ลิงก์ไปยังแหล่งข้อมูลโปรดหลีกเลี่ยง Wikipedia ฉันรู้ว่าจะหามันเจอแล้ว ในความสัมพันธ์กับเรื่องนี้ฉันสงสัยเกี่ยวกับวิธีการที่ผิดปกติที่ใช้โดยฐานข้อมูลบริการคลาวด์เช่น BigTable และ SimpleDB ดูคำถามนี้


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