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

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

6
การตั้งค่าออบเจ็กต์ Java เป็น null จะทำอะไรอีกต่อไปหรือไม่?
ฉันกำลังดูหนังสือเก่า ๆ และพบสำเนา "Practical Java" ของ Peter Hagger ในส่วนประสิทธิภาพมีคำแนะนำในการตั้งค่าการอ้างอิงอ็อบเจ็กต์nullเมื่อไม่จำเป็นอีกต่อไป ใน Java การตั้งค่าการอ้างอิงอ็อบเจ็กต์เพื่อnullปรับปรุงประสิทธิภาพหรือประสิทธิภาพการรวบรวมขยะหรือไม่ ถ้าเป็นเช่นนั้นปัญหานี้เกิดขึ้นในกรณีใด คลาสคอนเทนเนอร์? องค์ประกอบของวัตถุ? ชั้นในนิรนาม? ฉันเห็นสิ่งนี้ในโค้ดบ่อยๆ ตอนนี้คำแนะนำการเขียนโปรแกรมล้าสมัยแล้วหรือยังมีประโยชน์หรือไม่?

10
String.Contains () เร็วกว่า String.IndexOf () หรือไม่
ฉันมีสตริงบัฟเฟอร์ประมาณ 2,000 อักขระและต้องการตรวจสอบบัฟเฟอร์ว่ามีสตริงเฉพาะหรือไม่ จะทำการตรวจสอบในเว็บแอป ASP.NET 2.0 สำหรับทุกการร้องขอ มีใครรู้บ้างว่าเมธอด String.Containsทำงานได้ดีกว่าเมธอด String.IndexOfหรือไม่? // 2000 characters in s1, search token in s2 string s1 = "Many characters. The quick brown fox jumps over the lazy dog"; string s2 = "fox"; bool b; b = s1.Contains(s2); int i; i = s1.IndexOf(s2); สนุกจริงๆ
111 c#  .net  asp.net  performance  string 

4
เหตุใดธาร (a, d, n) จึงเร็วกว่า ** d% n มาก
ฉันกำลังพยายามใช้การทดสอบพื้นฐานของมิลเลอร์ - ราบินและรู้สึกงงว่าทำไมจึงใช้เวลานานมาก (> 20 วินาที) สำหรับตัวเลขขนาดกลาง (~ 7 หลัก) ในที่สุดฉันก็พบว่าบรรทัดของโค้ดต่อไปนี้เป็นที่มาของปัญหา: x = a**d % n (ที่a, dและnทุกคนที่คล้ายกัน แต่ไม่เท่ากัน, ตัวเลขขนาดกลาง**เป็นผู้ดำเนินการยกกำลังและ%เป็นผู้ดำเนินการแบบโมดูโล) ที่ จากนั้นฉันก็ลองแทนที่ด้วยสิ่งต่อไปนี้: x = pow(a, d, n) และเมื่อเปรียบเทียบแล้วมันแทบจะเกิดขึ้นในทันที สำหรับบริบทนี่คือฟังก์ชันดั้งเดิม: from random import randint def primalityTest(n, k): if n < 2: return False if n % 2 == 0: return False …
110 python  performance  pypy 

9
SQL SELECT speed int เทียบกับ varchar
ฉันอยู่ในขั้นตอนการสร้างตารางและมันทำให้ฉันสงสัย ถ้าฉันเก็บไว้บอกว่ารถที่มียี่ห้อ (fx BMW, Audi ect.) มันจะสร้างความแตกต่างกับความเร็วในการสืบค้นหรือไม่ถ้าฉันเก็บ make เป็น int หรือ varchar ก็คือ SELECT * FROM table WHERE make = 5 AND ...; เร็ว / ช้ากว่า SELECT * FROM table WHERE make = 'audi' AND ...; หรือความเร็วจะมากหรือน้อยเท่ากัน?

29
จะปรับปรุงประสิทธิภาพของ Netbeans ได้อย่างไร?
มีวิธีทำให้ Netbeans โหลดและทำงานได้เร็วขึ้นจริงหรือ? ช้าเกินไปและแย่ลงเมื่อคุณเขียนโค้ดมาระยะหนึ่ง มันกินแรมของฉันทั้งหมด ฉันใช้เครื่อง Windows โดยเฉพาะ Windows Server 2008 Datacenter Edition x64, RAM 4Gb, โปรเซสเซอร์ 3Ghz Core 2 Duo ฯลฯ ฉันใช้ x64 JDK ฉันใช้ NOD32 Antivirus เนื่องจากสำหรับฉันแล้วมันเป็นประสิทธิภาพที่ดีที่สุดสำหรับเครื่อง ในตัวจัดการงาน netbeans.exe แสดงเฉพาะไม่เกิน 20 Mb, java.exe มากกว่า 600Mb โครงการของฉันเป็นเว็บแอปพลิเคชัน J2EE มากกว่า 500 คลาสไม่รวมเฉพาะไลบรารีโครงการ (ภายนอก) และเมื่อฉันพูดว่าช้าฉันหมายความว่า Netbeans 3, 4, 5 นาทีหรือมากกว่านั้นถูกแช่แข็ง โครงการของฉันมีขนาดใหญ่เกินไปสำหรับ …

16
Android - ป้องกันหน้าจอสีขาวเมื่อเริ่มต้น
อย่างที่เราทราบกันดีว่าแอพ Android จำนวนมากแสดงหน้าจอสีขาวสั้น ๆ ก่อนที่จะActivityเข้าสู่โฟกัสครั้งแรก ปัญหานี้เกิดขึ้นในกรณีต่อไปนี้: แอป Android ที่ขยายระดับสากลApplicationและดำเนินการเริ่มต้นที่สำคัญในนั้น Application วัตถุที่ถูกสร้างขึ้นเสมอก่อนที่จะเป็นครั้งแรกActivity(ความจริงที่สามารถสังเกตได้ในการดีบัก) ดังนั้นนี้ทำให้รู้สึก นี่คือสาเหตุของความล่าช้าในกรณีของฉัน แอพ Android ที่แสดงหน้าต่างแสดงตัวอย่างเริ่มต้นก่อนหน้าจอเริ่มต้น android:windowDisablePreview = "true"เห็นได้ชัดว่าการตั้งค่าไม่ทำงานที่นี่ ฉันไม่สามารถตั้งค่าธีมหลักของหน้าจอเริ่มต้นTheme.Holo.NoActionBarเป็นตามที่อธิบายไว้ที่นี่ได้เนื่องจาก [น่าเสียดาย] หน้าจอเริ่มต้นของฉันใช้ActionBarไฟล์. ในขณะเดียวกันแอปที่ไม่ขยายApplicationชั้นเรียนจะไม่แสดงหน้าจอสีขาวเมื่อเริ่มต้น สิ่งนี้คือหลักการเริ่มต้นที่ดำเนินการในApplicationวัตถุจำเป็นต้องเกิดขึ้นก่อนที่Activityจะแสดงครั้งแรก ดังนั้นคำถามของฉันคือฉันจะทำการเริ่มต้นเหล่านี้ในการเริ่มต้นแอปโดยไม่ใช้Applicationวัตถุได้อย่างไร อาจใช้ a ThreadหรือServiceฉันคิดว่า? นี่เป็นปัญหาที่น่าคิด ฉันไม่สามารถข้ามมันได้ตามปกติ (โดยการตั้งค่าNoActionBarธีม) เนื่องจากน่าเศร้าที่หน้าจอ Splash ของฉันมีActionBarสาเหตุที่ไม่เกี่ยวข้องกัน บันทึก: ฉันได้อ้างถึงคำถามต่อไปนี้แล้ว: วิธีแก้ไขหน้าจอสีขาวบนแอพเริ่มต้นขึ้น หน้าจอเริ่มต้น Android เป็นสีขาว? หน้าจอสีขาวก่อนหน้าจอเริ่มต้น พื้นหลังสีขาวเมื่อแอป Android เริ่มทำงาน เหตุใดจึงมีหน้าจอสีขาวปรากฏขึ้นเป็นเวลา 1 วินาทีเมื่อเริ่มเรียกใช้แอปใน Android อ้างอิง: รูปแบบ …

8
SQL เข้าร่วมกับแบบสอบถามย่อยของ SQL (ประสิทธิภาพ)?
ฉันต้องการทราบว่าฉันมีแบบสอบถามเข้าร่วมบางอย่างเช่นนี้ - Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id และแบบสอบถามย่อยเช่นนี้ - Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept) เมื่อฉันพิจารณาประสิทธิภาพของคำค้นหาใดที่จะเร็วกว่าและเพราะเหตุใด มีเวลาที่ควรชอบมากกว่ากันไหม? ขออภัยหากนี่เป็นเรื่องเล็กน้อยเกินไปและถามมาก่อน แต่ฉันสับสนเกี่ยวกับเรื่องนี้ นอกจากนี้จะเป็นการดีมากหากพวกคุณสามารถแนะนำเครื่องมือที่ฉันควรใช้เพื่อวัดประสิทธิภาพของคำค้นหาสองรายการ ขอบคุณมาก!

10
ทำไม Go จึงช้ามาก (เมื่อเทียบกับ Java)
ดังที่เราเห็นจากเกมเกณฑ์มาตรฐานภาษาคอมพิวเตอร์ในปี 2010: Go จะช้ากว่าCโดยเฉลี่ย 10 เท่า Go ช้ากว่าJava 3 เท่า!? สิ่งนี้จะเป็นได้อย่างไรโดยจำไว้ว่า Go compiler สร้างโค้ดเนทีฟสำหรับการดำเนินการ คอมไพเลอร์ที่ยังไม่บรรลุนิติภาวะสำหรับ Go? หรือมีปัญหาบางอย่างกับภาษา Go? แก้ไข: คำตอบส่วนใหญ่ปฏิเสธความช้าของ Go โดยอ้างว่าปัญหาอยู่ในคอมไพเลอร์ที่ยังไม่บรรลุนิติภาวะ ดังนั้นฉันจึงได้ทำการทดสอบด้วยตัวเองเพื่อคำนวณตัวเลข Fibonacci : อัลกอริทึมซ้ำทำงานใน Go (freebsd, 6g) ด้วยsameความเร็วเช่นเดียวกับใน C (พร้อมตัวเลือก O3) ตัวเรียกซ้ำที่น่าเบื่อทำงานใน Go 2 timesช้ากว่าใน C (พร้อมตัวเลือก -O3 กับ -O0 - เหมือนกัน) แต่ฉันไม่เคยเห็น 10x ลดลงเหมือนในเกม Benchmarks

7
ข้อยกเว้นทำงานอย่างไร (เบื้องหลัง) ใน c ++
ฉันมักจะเห็นคนพูดว่าข้อยกเว้นนั้นช้า แต่ฉันไม่เคยเห็นข้อพิสูจน์ใด ๆ ดังนั้นแทนที่จะถามว่าพวกเขาเป็นอย่างไรฉันจะถามว่าข้อยกเว้นทำงานอย่างไรในเบื้องหลังดังนั้นฉันจึงสามารถตัดสินใจได้ว่าจะใช้เมื่อใดและจะช้าหรือไม่ จากสิ่งที่ฉันรู้ข้อยกเว้นจะเหมือนกับการส่งคืนหลายครั้งยกเว้นว่าจะตรวจสอบหลังจากการส่งคืนแต่ละครั้งว่าจำเป็นต้องทำอย่างอื่นหรือหยุด จะตรวจสอบได้อย่างไรว่าจะหยุดกลับเมื่อใด ฉันเดาว่ามีกองที่สองที่เก็บประเภทของข้อยกเว้นและตำแหน่งสแต็กจากนั้นจะส่งคืนจนกว่าจะถึงที่นั่น ฉันคาดเดาด้วยว่าครั้งเดียวที่สัมผัสกองที่สองนี้คือการโยนและในการลอง / จับแต่ละครั้ง AFAICT การใช้ลักษณะการทำงานที่คล้ายกันกับรหัสส่งคืนจะใช้เวลาเท่ากัน แต่ทั้งหมดนี้เป็นเพียงการคาดเดาดังนั้นฉันจึงอยากรู้ว่าเกิดอะไรขึ้น ข้อยกเว้นทำงานอย่างไร

3
ประสิทธิภาพของวิธีการแบบคงที่เทียบกับวิธีการของอินสแตนซ์
คำถามของฉันเกี่ยวข้องกับลักษณะการทำงานของวิธีการแบบคงที่เทียบกับวิธีการของอินสแตนซ์และความสามารถในการปรับขนาด สมมติสำหรับสถานการณ์นี้ว่านิยามคลาสทั้งหมดอยู่ในแอสเซมบลีเดียวและจำเป็นต้องมีชนิดตัวชี้แยกหลายชนิด พิจารณา: public sealed class InstanceClass { public int DoOperation1(string input) { // Some operation. } public int DoOperation2(string input) { // Some operation. } // … more instance methods. } public static class StaticClass { public static int DoOperation1(string input) { // Some operation. } public static int …

13
การต่อสายอักขระที่มีประสิทธิภาพใน C ++
ฉันได้ยินว่ามีคนสองสามคนแสดงความกังวลเกี่ยวกับตัวดำเนินการ "+" ใน std :: string และวิธีแก้ปัญหาต่างๆเพื่อเร่งการเชื่อมต่อ สิ่งเหล่านี้จำเป็นจริงๆหรือไม่? ถ้าเป็นเช่นนั้นวิธีที่ดีที่สุดในการเชื่อมสตริงใน C ++ คืออะไร?

3
ทำไมประเภทจำนวนเต็มแบบเร็วจึงเร็วกว่าประเภทจำนวนเต็มอื่น ๆ
ใน ISO / IEC 9899: 2018 (C18) แสดงไว้ภายใต้ 7.20.1.3: 7.20.1.3 ประเภทจำนวนเต็มความกว้างต่ำสุดที่เร็วที่สุด 1 แต่ละประเภทต่อไปนี้กำหนดประเภทจำนวนเต็มที่มักจะเร็วที่สุด268)เพื่อใช้งานกับประเภทจำนวนเต็มทั้งหมดที่มีความกว้างอย่างน้อยที่ระบุ 2 ชื่อ typedef int_fastN_tกำหนดประเภทจำนวนเต็มที่เร็วที่สุดที่ลงนามด้วยความกว้างอย่างน้อย N ชื่อ typedef uint_fastN_tกำหนดประเภทจำนวนเต็มที่ไม่ได้ลงชื่อที่เร็วที่สุดที่มีความกว้างอย่างน้อย N 3 ประเภทต่อไปนี้จำเป็นต้องใช้: int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t, uint_fast8_t, uint_fast16_t, uint_fast32_t,uint_fast64_t ประเภทอื่น ๆ ทั้งหมดของแบบฟอร์มนี้เป็นตัวเลือก 268)ประเภทที่กำหนดไม่รับประกันว่าจะเร็วที่สุดสำหรับทุกวัตถุประสงค์ หากการนำไปใช้ไม่มีเหตุผลที่ชัดเจนสำหรับการเลือกประเภทหนึ่งมากกว่าประเภทอื่นก็จะเลือกประเภทจำนวนเต็มบางอย่างที่ตอบสนองความต้องการของการลงนามและความกว้าง แต่ไม่ได้ระบุว่าทำไมประเภทจำนวนเต็ม "เร็ว" เหล่านี้จึงเร็วกว่า ทำไมจำนวนเต็มแบบเร็วเหล่านี้จึงเร็วกว่าประเภทจำนวนเต็มอื่น ๆ ผมติดแท็กคำถามกับ C ++ เพราะประเภทจำนวนเต็มอย่างรวดเร็วนอกจากนี้ยังมีใน C ++ 17 cstdintในไฟล์ส่วนหัวของ น่าเสียดายที่ใน …
107 c++  c  performance  types  int 

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

5
ค่าโสหุ้ยของตัวชี้อัจฉริยะเทียบกับตัวชี้ปกติใน C ++ เป็นเท่าใด
ค่าโสหุ้ยของตัวชี้อัจฉริยะเทียบกับพอยน์เตอร์ปกติใน C ++ 11 เป็นเท่าใด กล่าวอีกนัยหนึ่งรหัสของฉันจะช้าลงหรือไม่หากฉันใช้ตัวชี้อัจฉริยะและถ้าเป็นเช่นนั้นจะช้าลงเท่าใด โดยเฉพาะฉันถามเกี่ยวกับ C ++ 11 std::shared_ptrและstd::unique_ptr. เห็นได้ชัดว่าสิ่งที่ผลักลงในสแต็กจะมีขนาดใหญ่ขึ้น (อย่างน้อยฉันก็คิดอย่างนั้น) เนื่องจากตัวชี้อัจฉริยะจำเป็นต้องเก็บสถานะภายในไว้ด้วย (จำนวนอ้างอิง ฯลฯ ) คำถามก็คือสิ่งนี้จะเป็นเท่าใด ส่งผลกระทบต่อประสิทธิภาพการทำงานของฉันหรือไม่ ตัวอย่างเช่นฉันส่งคืนตัวชี้อัจฉริยะจากฟังก์ชันแทนที่จะเป็นตัวชี้ปกติ: std::shared_ptr<const Value> getValue(); // versus const Value *getValue(); หรือตัวอย่างเช่นเมื่อฟังก์ชันหนึ่งของฉันยอมรับตัวชี้อัจฉริยะเป็นพารามิเตอร์แทนที่จะเป็นตัวชี้ปกติ: void setValue(std::shared_ptr<const Value> val); // versus void setValue(const Value *val);


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