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

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

14
ฟังก์ชั่นแบบอินไลน์ใน C #?
คุณจะทำอย่างไร "ฟังก์ชั่นแบบอินไลน์" ใน C #? ฉันไม่คิดว่าฉันเข้าใจแนวคิดนี้ พวกเขาชอบวิธีที่ไม่ระบุชื่อหรือไม่? เช่นเดียวกับฟังก์ชั่นแลมบ์ดา? หมายเหตุ : คำตอบเกือบทั้งหมดเกี่ยวข้องกับความสามารถในการทำงานของอินไลน์เช่น "การปรับให้เหมาะสมด้วยตนเองหรือคอมไพเลอร์ที่แทนที่ไซต์การเรียกใช้ฟังก์ชันด้วยเนื้อความของผู้เรียก" หากคุณสนใจฟังก์ชั่นนิรนาม (aka lambda)โปรดดูคำตอบของ @ jalfหรือทุกคนที่ 'แลมบ์ดา' พูดถึงอะไร? .
276 c#  optimization  inline 

30
วงกลับเร็วขึ้นจริงๆหรือ
ฉันเคยได้ยินเรื่องนี้ค่อนข้างน้อย JavaScript มีการวนซ้ำเร็วขึ้นจริงหรือไม่เมื่อนับถอยหลัง ถ้าเป็นเช่นนั้นทำไม ฉันเห็นตัวอย่างชุดทดสอบสองสามตัวอย่างที่แสดงว่าลูปที่กลับด้านนั้นเร็วกว่า แต่ฉันไม่สามารถหาคำอธิบายได้ว่าทำไม! ฉันสมมติว่าเป็นเพราะลูปไม่ต้องประเมินคุณสมบัติทุกครั้งที่ตรวจสอบเพื่อดูว่ามันเสร็จแล้วและตรวจสอบกับค่าตัวเลขสุดท้าย กล่าวคือ for (var i = count - 1; i >= 0; i--) { // count is only evaluated once and then the comparison is always on 0. }

8
วิธีที่เร็วที่สุดในการแปลงสตริงเป็นจำนวนเต็มใน PHP
ใช้ PHP วิธีที่เร็วที่สุดในการแปลงสตริงเช่นนี้"123"เป็นจำนวนเต็มคืออะไร เหตุใดจึงเป็นวิธีที่เร็วที่สุด? จะเกิดอะไรขึ้นหากได้รับอินพุตที่ไม่คาดคิดเช่น"hello"หรืออาร์เรย์

10
ฉันจะวางภาพหนึ่งภาพไว้ที่อีกภาพหนึ่งใน HTML ได้อย่างไร
ฉันเป็นผู้เริ่มต้นในการเขียนโปรแกรมรางพยายามที่จะแสดงภาพจำนวนมากบนหน้า ภาพบางภาพจะวางซ้อนทับกัน เพื่อให้ง่ายบอกว่าฉันต้องการสี่เหลี่ยมสีน้ำเงินโดยมีสี่เหลี่ยมสีแดงที่มุมบนขวาของสี่เหลี่ยมสีน้ำเงิน (แต่ไม่แน่นตรงมุม) ฉันพยายามหลีกเลี่ยงการรวมภาพ (ด้วย ImageMagick และที่คล้ายกัน) เนื่องจากปัญหาด้านประสิทธิภาพ ฉันแค่ต้องการวางตำแหน่งภาพที่ซ้อนทับกันซึ่งสัมพันธ์กัน เป็นตัวอย่างที่ยากขึ้นลองจินตนาการถึงมาตรวัดระยะทางที่อยู่ภายในภาพขนาดใหญ่ สำหรับตัวเลขหกหลักฉันจะต้องรวมกันเป็นล้านภาพที่แตกต่างกันหรือทำทุกอย่างทันทีที่ทุกอย่างที่จำเป็นคือการวางภาพหกภาพที่ด้านบนของอีกหนึ่ง

24
เวอร์ชันถ่วงน้ำหนักของ random.choice
ฉันต้องการเขียน random.choice แบบถ่วงน้ำหนัก (แต่ละองค์ประกอบในรายการมีความน่าจะเป็นที่แตกต่างกันสำหรับการเลือก) นี่คือสิ่งที่ฉันมาด้วย: def weightedChoice(choices): """Like random.choice, but each element can have a different chance of being selected. choices can be any iterable containing iterables with two items each. Technically, they can have more than two items, the rest will just be ignored. The first item is the …

12
เขียนไฟล์ไบนารีใน C ++ อย่างรวดเร็ว
ฉันกำลังพยายามเขียนข้อมูลจำนวนมากบน SSD ของฉัน (โซลิดสเตทไดรฟ์) และโดยจำนวนมากฉันหมายถึง 80GB ฉันเรียกค้นเว็บเพื่อหาแนวทางแก้ไข แต่สิ่งที่ดีที่สุดที่ฉันพบคือ: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream myfile; myfile = std::fstream("file.binary", std::ios::out | std::ios::binary); //Here would be some error handling for(int i = 0; i < 32; ++i){ //Some calculations to fill …

7
เสียงดังก้องกับ GCC - ซึ่งสร้างไบนารีที่ดีกว่า? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ปัจจุบันฉันใช้ GCC แต่ฉันค้นพบ Clang เมื่อเร็ว ๆ นี้และฉันกำลังไตร่ตรองการสลับ มีปัจจัยหนึ่งในการตัดสินใจว่า - คุณภาพ (ความเร็ว, หน่วยความจำรอยเท้า, ความน่าเชื่อถือ) ของไบนารีที่สร้าง - หากgcc -O3สามารถสร้างไบนารีที่ทำงานได้เร็วขึ้น 1% หรือใช้หน่วยความจำน้อยลง 1% มันเป็นดีลเลอร์ดีล Clang มีความเร็วในการคอมไพล์ที่ดีขึ้นและการปล่อยหน่วยความจำเวลาคอมไพล์ที่ต่ำกว่า GCC แต่ฉันสนใจในการวัด / เปรียบเทียบผลของซอฟต์แวร์ที่คอมไพล์แล้ว - คุณช่วยชี้ให้ฉันเห็นหรือเล่าประสบการณ์ของคุณได้ไหม?

20
ประกาศตัวแปรภายในหรือภายนอกของลูป
ทำไมงานต่อไปนี้ถึงทำงานได้ดี? String str; while (condition) { str = calculateStr(); ..... } แต่สิ่งนี้ถูกกล่าวว่าเป็นอันตราย / ไม่ถูกต้อง: while (condition) { String str = calculateStr(); ..... } จำเป็นต้องประกาศตัวแปรนอกลูปหรือไม่?

5
ระดับการปรับให้เหมาะสม -O3 เป็นอันตรายใน g ++ หรือไม่
ฉันเคยได้ยินจากแหล่งต่าง ๆ (แม้ว่าส่วนใหญ่มาจากเพื่อนร่วมงานของฉัน) การรวบรวมด้วยระดับการเพิ่มประสิทธิภาพของ-O3ใน g ++ นั้นค่อนข้างอันตรายและควรหลีกเลี่ยงโดยทั่วไปเว้นแต่จะพิสูจน์แล้วว่าจำเป็น นี่เป็นเรื่องจริงหรือไม่และถ้าเป็นเช่นนั้นทำไม ฉันควรจะติดกับ-O2?


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 : …

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 ; …

10
การจัดเก็บ JSON ในฐานข้อมูลเทียบกับการมีคอลัมน์ใหม่สำหรับแต่ละคีย์
ฉันกำลังใช้โมเดลต่อไปนี้สำหรับเก็บข้อมูลที่เกี่ยวข้องกับผู้ใช้ในตารางของฉัน - ฉันมี 2 คอลัมน์ - uid(คีย์หลัก) และmetaคอลัมน์ที่เก็บข้อมูลอื่นเกี่ยวกับผู้ใช้ในรูปแบบ JSON uid | meta -------------------------------------------------- 1 | {name:['foo'], | emailid:['foo@bar.com','bar@foo.com']} -------------------------------------------------- 2 | {name:['sann'], | emailid:['sann@bar.com','sann@foo.com']} -------------------------------------------------- นี่คือวิธีที่ดีกว่า (ประสิทธิภาพฉลาดการออกแบบที่ชาญฉลาด) กว่ารุ่นหนึ่งคอลัมน์ต่อทรัพย์สินที่ตารางจะมีคอลัมน์มากมายเช่นuid, ,nameemailid สิ่งที่ฉันชอบเกี่ยวกับโมเดลแรกคือคุณสามารถเพิ่มฟิลด์ได้มากเท่าที่จะทำได้โดยไม่มีข้อ จำกัด นอกจากนี้ฉันยังสงสัยว่าตอนนี้ฉันได้ใช้โมเดลแรกแล้ว ฉันจะทำเคียวรีอย่างไรเช่นฉันต้องการดึงข้อมูลผู้ใช้ทั้งหมดที่มีชื่อเช่น 'foo' คำถาม - วิธีใดที่จะดีกว่าในการจัดเก็บข้อมูลที่เกี่ยวข้องกับผู้ใช้ (จำไว้ว่าจำนวนของฟิลด์ไม่คงที่) ในฐานข้อมูลโดยใช้ - JSON หรือคอลัมน์ต่อฟิลด์ นอกจากนี้หากมีการนำโมเดลแรกไปใช้จะทำการสืบค้นฐานข้อมูลตามที่อธิบายไว้ข้างต้นได้อย่างไร ฉันควรใช้ทั้งสองโมเดลโดยการเก็บข้อมูลทั้งหมดซึ่งอาจถูกค้นหาโดยเคียวรีในแถวแยกต่างหากและข้อมูลอื่นใน JSON (เป็นแถวที่แตกต่างกัน) ปรับปรุง เนื่องจากไม่มีคอลัมน์มากเกินไปที่ฉันต้องทำการค้นหาจึงควรใช้ทั้งสองแบบหรือไม่ คีย์ต่อคอลัมน์สำหรับข้อมูลที่ฉันต้องการค้นหาและ JSON …

12
จะวาง JavaScript ในไฟล์ HTML ได้ที่ไหน
บอกว่าฉันมีไฟล์จาวาสคริปต์ที่ค่อนข้างหนักบรรจุลงประมาณ 100kb หรือมากกว่านั้น โดยไฟล์ฉันหมายความว่ามันเป็นไฟล์ภายนอกที่จะเชื่อมโยงในผ่าน<script src="...">ไม่ได้วางลงใน HTML ตัวเอง ที่ไหนดีที่สุดในการวางสิ่งนี้ลงใน HTML <html> <head> <!-- here? --> <link rel="stylesheet" href="stylez.css" type="text/css" /> <!-- here? --> </head> <body> <!-- here? --> <p>All the page content ...</p> <!-- or here? --> </body> </html> จะมีความแตกต่างในการใช้งานระหว่างตัวเลือกแต่ละตัวหรือไม่?

22
เหตุใดเวลารวบรวมของ Swift จึงช้ามาก
ฉันใช้ Xcode 6 Beta 6 นี่เป็นบางสิ่งบางอย่างที่ดักฟังฉันมาระยะหนึ่งแล้ว แต่มันมาถึงจุดที่ใช้งานได้แทบจะไม่แล้วในตอนนี้ โครงการของฉันเริ่มที่จะมีดีขนาด 65 ไฟล์อย่างรวดเร็วและไม่กี่สะพานไฟล์ Objective-C (ซึ่งจริงๆไม่ได้เป็นสาเหตุของปัญหา) ดูเหมือนว่าการดัดแปลงเล็กน้อยสำหรับไฟล์ Swift ใด ๆ (เช่นการเพิ่มพื้นที่สีขาวแบบง่าย ๆ ในคลาสที่แทบจะไม่เคยใช้ในแอพ) จะทำให้ไฟล์ Swift ทั้งหมดสำหรับเป้าหมายที่ระบุได้รับการคอมไพล์ใหม่ หลังจากการตรวจสอบที่ลึกกว่านี้ฉันพบว่าสิ่งที่ใช้เวลาในการรวบรวม 100% นั้นเป็นCompileSwiftขั้นตอนที่ Xcode ใช้swiftcคำสั่งในไฟล์ Swift ทั้งหมดของเป้าหมายของคุณ ฉันทำการตรวจสอบเพิ่มเติมและถ้าฉันเก็บตัวแทนแอพไว้ด้วยคอนโทรลเลอร์เริ่มต้นเท่านั้นการคอมไพล์นั้นเร็วมาก แต่เมื่อฉันเพิ่มไฟล์โครงการของฉันมากขึ้นเรื่อย ๆ เวลาในการคอมไพล์ก็เริ่มช้าลงจริง ๆ ขณะนี้มีไฟล์ต้นฉบับเพียง 65 ไฟล์จึงใช้เวลารวบรวมประมาณ 8/10 วินาทีในแต่ละครั้ง ไม่เร็วมากเลย ฉันไม่ได้เห็นโพสต์พูดคุยเกี่ยวกับปัญหานี้ยกเว้นคนนี้แต่มันเป็นรุ่นเก่า Xcode 6. ดังนั้นฉันสงสัยว่าถ้าผมเป็นเพียงหนึ่งในกรณีที่ UPDATE ฉันได้ตรวจสอบโครงการ Swift สองสามรายการบนGitHubเช่นAlamofire , EulerและCryptoSwiftแต่ไม่มีโครงการใดที่มีไฟล์ …

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