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

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

4
Java 8: ประสิทธิภาพของ Streams vs Collections
ฉันยังใหม่กับ Java 8 ฉันยังไม่รู้ API ในเชิงลึก แต่ฉันได้ทำเกณฑ์มาตรฐานอย่างไม่เป็นทางการเพื่อเปรียบเทียบประสิทธิภาพของ Streams API ใหม่กับคอลเลกชันเก่าที่ดี การทดสอบประกอบด้วยในการกรองรายการIntegerและจำนวนคู่แต่ละคำนวณรากและเก็บไว้ในผลของListDouble นี่คือรหัส: public static void main(String[] args) { //Calculating square root of even numbers from 1 to N int min = 1; int max = 1000000; List<Integer> sourceList = new ArrayList<>(); for (int i = min; i < max; i++) …

8
มีผลกระทบต่อประสิทธิภาพเมื่อโทร ToList () หรือไม่?
เมื่อใช้ToList()จะมีผลกระทบต่อประสิทธิภาพที่ต้องพิจารณาหรือไม่ ฉันกำลังเขียนแบบสอบถามเพื่อดึงไฟล์จากไดเรกทอรีซึ่งเป็นแบบสอบถาม: string[] imageArray = Directory.GetFiles(directory); อย่างไรก็ตามเนื่องจากฉันชอบทำงานด้วยList<>แทนฉันจึงตัดสินใจที่จะใส่ ... List<string> imageList = Directory.GetFiles(directory).ToList(); ดังนั้นจะมีผลกระทบต่อประสิทธิภาพการทำงานบางอย่างที่ควรพิจารณาเมื่อตัดสินใจทำการแปลงเช่นนี้หรือควรพิจารณาเมื่อจัดการกับไฟล์จำนวนมากเท่านั้น นี่เป็นการแปลงที่เล็กน้อยหรือไม่?
139 c#  arrays  performance  list 

18
แถวสุดท้ายของ SQL Server SELECT N
นี่เป็นคำถามที่ทราบ แต่วิธีแก้ปัญหาที่ดีที่สุดที่ฉันพบคือ: SELECT TOP N * FROM MyTable ORDER BY Id DESC ฉันมีตารางที่มีแถวจำนวนมาก ไม่ใช่ความเป็นไปได้ที่จะใช้คิวรีนั้นเนื่องจากใช้เวลานาน ดังนั้นฉันจะเลือกแถวสุดท้ายได้อย่างไรโดยไม่ต้องใช้ ORDER BY แก้ไข ขออภัยคำถามซ้ำซ้อนกับคำถามนี้

10
คุณคำนวณ log ฐาน 2 ใน Java สำหรับจำนวนเต็มได้อย่างไร
ฉันใช้ฟังก์ชันต่อไปนี้เพื่อคำนวณ log ฐาน 2 สำหรับจำนวนเต็ม: public static int log2(int n){ if(n <= 0) throw new IllegalArgumentException(); return 31 - Integer.numberOfLeadingZeros(n); } มันมีประสิทธิภาพที่ดีที่สุด? มีคนรู้ว่าฟังก์ชั่น J2SE API พร้อมสำหรับวัตถุประสงค์นั้นหรือไม่? UPD1 น่าแปลกใจสำหรับฉันเลขคณิตจุดลอยตัวดูเหมือนจะเร็วกว่าเลขคณิตจำนวนเต็ม UPD2 เนื่องจากความคิดเห็นฉันจะดำเนินการตรวจสอบอย่างละเอียดมากขึ้น UPD3 ฟังก์ชันเลขจำนวนเต็มของฉันเร็วกว่า Math.log (n) / Math.log (2) 10 เท่า

4
ครอบครัว“ * นำไปใช้” ไม่ได้รับการปรับเวกเตอร์จริงๆเหรอ?
ดังนั้นเราจึงเคยพูดกับผู้ใช้ R ใหม่ทุกคนว่า " applyไม่ใช่ vectorized ลองดู Patrick Burns R Inferno Circle 4 " ซึ่งบอกว่า (ฉันพูด): การสะท้อนที่พบบ่อยคือการใช้ฟังก์ชั่นในครอบครัวใช้ นี้ไม่ได้เป็น vectorization ก็เป็นห่วงซ่อน ฟังก์ชั่นใช้มีห่วงสำหรับในความหมายของมัน ฟังก์ชัน lapply ฝังลูป แต่เวลาดำเนินการมีแนวโน้มที่จะเท่ากับคร่าว ๆ อย่างชัดเจนสำหรับลูป อันที่จริงการดูอย่างรวดเร็วของapplyซอร์สโค้ดแสดงการวนซ้ำ: grep("for", capture.output(getAnywhere("apply")), value = TRUE) ## [1] " for (i in 1L:d2) {" " else for (i in 1L:d2) {" โอเคจนถึงตอนนี้ แต่การดูlapplyหรือvapplyเปิดเผยภาพที่แตกต่างอย่างสิ้นเชิงจริง …

12
ส่งออกข้อมูลจากเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome
การวิเคราะห์เครือข่ายโดย Chrome เมื่อโหลดหน้าเว็บ ฉันต้องการส่งออกข้อมูลนี้ไปยัง Microsoft Excel เพื่อให้ฉันมีรายการของข้อมูลที่คล้ายกันเมื่อโหลดในเวลาที่ต่างกัน การโหลดหน้าหนึ่งครั้งไม่ได้บอกอะไรมากมายโดยเฉพาะถ้าฉันต้องการเปรียบเทียบหน้า เป็นไปได้ไหมที่จะทำเช่นนี้ผ่านเครื่องมือหรือส่วนขยายของโครเมี่ยม

4
Ruby Array วัตถุ find_first?
ฉันขาดอะไรบางอย่างในเอกสาร Array หรือไม่ ฉันมีอาร์เรย์ที่มีออบเจ็กต์มากถึงหนึ่งชิ้นที่ตรงตามเกณฑ์ที่กำหนด ฉันต้องการค้นหาวัตถุนั้นอย่างมีประสิทธิภาพ ความคิดที่ดีที่สุดที่ฉันมีจากเอกสารคือ: candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? แต่ฉันไม่พอใจด้วยเหตุผลสองประการ: นั่นselectทำให้ฉันสำรวจอาร์เรย์ทั้งหมดแม้ว่าเราจะสามารถประกันตัวได้หลังจากการโจมตีครั้งแรก ฉันต้องการรหัสบรรทัด (พร้อมเงื่อนไข) เพื่อทำให้ผู้สมัครแบนราบ การดำเนินการทั้งสองอย่างสิ้นเปลืองโดยรู้ล่วงหน้าว่ามีวัตถุที่น่าพอใจ 0 หรือ 1 ชิ้น สิ่งที่ฉันต้องการคือ: array.find_first(block) ซึ่งส่งคืนค่า nil หรืออ็อบเจ็กต์แรกที่บล็อกประเมินเป็น true โดยสิ้นสุดการข้ามผ่านที่อ็อบเจ็กต์นั้น ฉันต้องเขียนเองหรือไม่? วิธีการที่ยอดเยี่ยมอื่น ๆ ทั้งหมดใน Array ทำให้ฉันคิดว่ามันอยู่ที่นั่นและฉันไม่เห็นมัน
137 ruby  arrays  performance  find 


5
ประสิทธิภาพของ FOR vs FOREACH ใน PHP
ก่อนอื่นฉันเข้าใจใน 90% ของแอปพลิเคชันความแตกต่างของประสิทธิภาพนั้นไม่เกี่ยวข้องกันเลย แต่ฉันแค่ต้องรู้ว่าตัวไหนเร็วกว่า นั่นแล ... ข้อมูลที่มีอยู่บนอินเทอร์เน็ตในปัจจุบันทำให้เกิดความสับสน หลายคนบอกว่า foreach ไม่ดี แต่ในทางเทคนิคแล้วมันควรจะเร็วกว่าเพราะมันควรจะทำให้การเขียนการส่งผ่านอาร์เรย์ง่ายขึ้นโดยใช้ตัววนซ้ำ Iterators ซึ่งคาดว่าจะเร็วขึ้นอีกครั้ง แต่ใน PHP ก็เห็นได้ชัดว่าช้า (หรือนี่ไม่ใช่ PHP?) ฉันกำลังพูดถึงฟังก์ชั่นอาร์เรย์: next () prev () reset () เป็นต้นถ้าเป็นฟังก์ชั่นที่สม่ำเสมอและไม่ใช่หนึ่งในคุณสมบัติภาษา PHP ที่มีลักษณะเหมือนฟังก์ชัน เพื่อ จำกัด สิ่งนี้ให้แคบลงเล็กน้อย : ฉันไม่น่าสนใจในการสำรวจอาร์เรย์ในขั้นตอนที่มากกว่า 1 (ไม่มีขั้นตอนเชิงลบเช่นกันเช่นการวนซ้ำย้อนกลับ) ฉันยังไม่สนใจการลัดเลาะไปและกลับจากจุดใด ๆ โดยพลการเพียงแค่ 0 ถึงความยาว ฉันไม่เห็นการจัดการอาร์เรย์ที่มีมากกว่า 1,000 คีย์เกิดขึ้นเป็นประจำ แต่ฉันเห็นว่าอาร์เรย์ถูกข้ามผ่านหลายครั้งด้วยตรรกะของแอปพลิเคชัน! สำหรับการดำเนินการส่วนใหญ่เป็นเพียงการจัดการสตริงและการสะท้อนเท่านั้น เว็บไซต์อ้างอิงบางส่วนมีดังนี้: http://www.phpbench.com/ http://www.php.lt/benchmark/phpbench.php สิ่งที่ฉันได้ยินทุกที่: foreachช้าและทำให้for/ …

13
การเพิ่มประสิทธิภาพใด ๆ สำหรับการเข้าถึงแบบสุ่มในอาร์เรย์ขนาดใหญ่มากเมื่อค่าใน 95% ของเคสเป็น 0 หรือ 1?
มีการเพิ่มประสิทธิภาพที่เป็นไปได้สำหรับการเข้าถึงแบบสุ่มในอาร์เรย์ขนาดใหญ่มากหรือไม่ (ปัจจุบันฉันใช้uint8_tและกำลังถามว่ามีอะไรดีกว่า) uint8_t MyArray[10000000]; เมื่อค่าที่ตำแหน่งใด ๆ ในอาร์เรย์คือ 0หรือ1สำหรับ95%ของทุกกรณี 2ใน4%ของกรณี ระหว่าง3ถึง255ในอีก1%ของกรณี? มีอะไรดีไปกว่าuint8_tอาร์เรย์ที่จะใช้สำหรับสิ่งนี้หรือไม่? ควรเร็วที่สุดเท่าที่จะเป็นไปได้ในการวนซ้ำอาร์เรย์ทั้งหมดตามลำดับแบบสุ่มและนี่หนักมากกับแบนด์วิดท์ RAM ดังนั้นเมื่อมีเธรดมากกว่าสองสามเธรดที่ทำเช่นนั้นในเวลาเดียวกันสำหรับอาร์เรย์ที่แตกต่างกันปัจจุบันแบนด์วิดท์ RAM ทั้งหมด อิ่มตัวอย่างรวดเร็ว ฉันถามเนื่องจากรู้สึกว่าไม่มีประสิทธิภาพมากที่จะมีอาร์เรย์ขนาดใหญ่ (10 MB) เมื่อทราบว่าค่าเกือบทั้งหมดนอกเหนือจาก 5% จะเป็น 0 หรือ 1 ดังนั้นเมื่อ 95% ของค่าทั้งหมดในอาร์เรย์ ต้องการเพียง 1 บิตแทนที่จะเป็น 8 บิตซึ่งจะลดการใช้หน่วยความจำลงเกือบจะเป็นลำดับความสำคัญ รู้สึกว่าจะต้องมีโซลูชันที่มีประสิทธิภาพหน่วยความจำมากกว่าซึ่งจะช่วยลดแบนด์วิดท์ RAM ที่จำเป็นสำหรับสิ่งนี้ได้อย่างมากและเป็นผลให้การเข้าถึงแบบสุ่มเร็วขึ้นอย่างมาก

10
การแก้ไขข้อบกพร่องเทียบกับประสิทธิภาพการเปิดตัว
ฉันพบย่อหน้าต่อไปนี้: “ การแก้จุดบกพร่องเทียบกับการตั้งค่ารีลีสใน IDE เมื่อคุณคอมไพล์โค้ดของคุณใน Visual Studio แทบจะไม่แตกต่างกับประสิทธิภาพ…โค้ดที่สร้างขึ้นเกือบจะเหมือนกัน คอมไพเลอร์ C # ไม่ได้ทำการปรับให้เหมาะสม คอมไพเลอร์ C # เพียงแค่พ่น IL ... และที่รันไทม์เป็น JITer ที่ทำหน้าที่เพิ่มประสิทธิภาพทั้งหมด JITer มีโหมด Debug / Release ซึ่งสร้างความแตกต่างอย่างมากให้กับประสิทธิภาพ แต่นั่นไม่ได้สำคัญว่าคุณจะเรียกใช้การกำหนดค่าการดีบักหรือรีลีสของโปรเจ็กต์ของคุณหรือไม่นั่นคือกุญแจสำคัญว่าจะแนบดีบักเกอร์หรือไม่ แหล่งที่มาที่นี่และพอดคาสต์เป็นที่นี่ ใครช่วยแนะนำบทความของ Microsoft ที่สามารถพิสูจน์สิ่งนี้ได้จริง Googling " C # debug vs release performance " ส่วนใหญ่จะแสดงผลลัพธ์ว่า " Debug has a lot of performance hit …

8
D เมื่อเทียบกับ C ++ เร็วแค่ไหน?
ฉันชอบคุณสมบัติบางอย่างของ D แต่จะสนใจว่ามันมาพร้อมกับการลงโทษรันไทม์หรือไม่? เพื่อเปรียบเทียบฉันใช้โปรแกรมง่ายๆที่คำนวณผลิตภัณฑ์สเกลาร์ของเวกเตอร์สั้น ๆ จำนวนมากทั้งใน C ++ และใน D ผลลัพธ์ที่ได้นั้นน่าประหลาดใจ: D: 18.9 วินาที [ดูด้านล่างสำหรับรันไทม์สุดท้าย] C ++: 3.8 วิ C ++ เร็วกว่าเกือบห้าเท่าจริง ๆ หรือว่าฉันทำผิดพลาดในโปรแกรม D? ฉันรวบรวม C ++ ด้วย g ++ -O3 (gcc-snapshot 2011-02-19) และ D พร้อม dmd -O (dmd 2.052) บนเดสก์ท็อป linux ในระดับปานกลาง ผลลัพธ์สามารถทำซ้ำได้ในการวิ่งหลายครั้งและค่าเบี่ยงเบนมาตรฐานเล็กน้อย ที่นี่โปรแกรม C ++: #include <iostream> …
133 c++  performance  runtime  d 

3
Apache Spark: map vs mapPartitions?
อะไรคือความแตกต่างระหว่างRDD mapและmapPartitionsวิธีการ? และflatMapประพฤติชอบmapหรือmapPartitionsไม่? ขอบคุณ (แก้ไข) คืออะไรคือความแตกต่าง (ทั้งในเชิงความหมายหรือในแง่ของการดำเนินการ) ระหว่าง def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = { rdd.mapPartitions({ iter: Iterator[A] => for (i <- iter) yield fn(i) }, preservesPartitioning = true) } และ: def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: …

3
เหตุใดการวนซ้ำบนสตริงขนาดเล็กจึงช้ากว่ารายการขนาดเล็ก
ฉันกำลังเล่นกับเวลาและสังเกตว่าการทำความเข้าใจรายการอย่างง่ายบนสตริงขนาดเล็กใช้เวลานานกว่าการดำเนินการแบบเดียวกันกับรายการสตริงอักขระเดี่ยวขนาดเล็ก คำอธิบายใด ๆ เป็นเวลาเกือบ 1.35 เท่า >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x for x in ['a', 'b', 'c']]") 1.5286479570345861 เกิดอะไรขึ้นในระดับล่างที่ทำให้เกิดสิ่งนี้

7
เหตุใดคอมไพเลอร์จึงไม่สามารถปรับแต่งลูปการเพิ่มที่คาดเดาได้ให้เหมาะสมกับการคูณ
นี่คือคำถามที่มาถึงใจในขณะที่อ่านคำตอบที่ยอดเยี่ยมโดยMysticialคำถาม: ทำไมมันเร็วขึ้นในการประมวลผลอาร์เรย์เรียงกว่าอาร์เรย์ไม่ได้เรียงลำดับ ? บริบทสำหรับประเภทที่เกี่ยวข้อง: const unsigned arraySize = 32768; int data[arraySize]; long long sum = 0; ในคำตอบของเขาเขาอธิบายว่า Intel Compiler (ICC) เพิ่มประสิทธิภาพสิ่งนี้: for (int i = 0; i < 100000; ++i) for (int c = 0; c < arraySize; ++c) if (data[c] >= 128) sum += data[c]; ... เป็นสิ่งที่เทียบเท่ากับสิ่งนี้: for (int …

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