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

คำถามที่เกี่ยวข้องกับการปรับปรุงประสิทธิภาพของแอปพลิเคชันอาจมีตั้งแต่สถาปัตยกรรมซอฟต์แวร์ที่เลือกไปจนถึงการเลือกอัลกอริทึม

14
ทำไมนักพัฒนาหลายคนเชื่อว่าประสิทธิภาพการอ่านและการบำรุงรักษาไม่สามารถอยู่ร่วมกันได้?
ในขณะที่ตอบคำถามนี้ฉันเริ่มสงสัยว่าทำไมนักพัฒนาจำนวนมากเชื่อว่าการออกแบบที่ดีไม่ควรคำนึงถึงประสิทธิภาพเนื่องจากการทำเช่นนั้นจะส่งผลต่อความสามารถในการอ่านและ / หรือการบำรุงรักษา ฉันเชื่อว่าการออกแบบที่ดีต้องคำนึงถึงประสิทธิภาพในขณะที่เขียนและผู้พัฒนาที่ดีที่มีการออกแบบที่ดีสามารถเขียนโปรแกรมที่มีประสิทธิภาพโดยไม่ส่งผลกระทบต่อความสามารถในการอ่านหรือการบำรุงรักษา ในขณะที่ฉันรับทราบว่ามีหลายกรณีทำไมนักพัฒนาหลายคนยืนยันว่าโปรแกรม / การออกแบบที่มีประสิทธิภาพจะส่งผลให้ความสามารถในการอ่านต่ำและ / หรือการบำรุงรักษาไม่ดีและดังนั้นประสิทธิภาพจึงไม่ควรคำนึงถึงการออกแบบ

4
คอมไพเลอร์ JIT สำหรับ C, C ++ และไลค์
มีคอมไพเลอร์ทันเวลาหรือไม่สำหรับภาษาที่คอมไพล์เช่น C และ C ++ (ชื่อแรกที่นึกได้คือ Clang และ LLVM! แต่ฉันไม่คิดว่าพวกเขาจะสนับสนุน) คำอธิบาย: ฉันคิดว่าซอฟต์แวร์สามารถได้รับประโยชน์จากข้อเสนอแนะการทำโปรไฟล์รันไทม์และการรวบรวมฮอตสปอตที่รันไทม์ให้ได้ประสิทธิภาพสูงสุดแม้สำหรับภาษาที่คอมไพล์ระหว่างเครื่องเช่น C และ C ++ การปรับให้เหมาะสมแบบแนะนำตัวด้วยโปรไฟล์ทำหน้าที่คล้ายกัน แต่ด้วยความแตกต่าง JIT จะมีความยืดหยุ่นมากขึ้นในสภาพแวดล้อมที่แตกต่างกัน ใน PGO คุณเรียกใช้ไบนารีของคุณก่อนที่จะปล่อย หลังจากคุณเผยแพร่แล้วจะไม่มีการรวบรวมผลตอบรับจากสภาพแวดล้อม / อินพุตที่รันไทม์ ดังนั้นหากรูปแบบการป้อนข้อมูลมีการเปลี่ยนแปลงมันจะสอบสวนเพื่อปรับประสิทธิภาพ แต่ JIT ใช้งานได้ดีแม้ในสภาพนั้น อย่างไรก็ตามฉันคิดว่ามันเป็นเรื่องที่ถกเถียงกันอยู่ว่าการรวบรวม JIT นั้นมีประโยชน์มากกว่าค่าใช้จ่ายของตัวเอง

1
ขนาดจริงสูงสุดสำหรับฐานข้อมูล SQLite ที่สมจริงและเป็นจริงคืออะไร?
ตามบทความนี้เกี่ยวกับการใช้งานที่เหมาะสมสำหรับ SQLiteมันบอกว่าในขณะที่ SQLite จำกัด ไว้ที่140 terabytesไคลเอ็นต์ / เซิร์ฟเวอร์ RDBMS อาจทำงานได้ดีขึ้น: ฐานข้อมูล SQLite มีขนาด จำกัด ที่ 140 เทราไบต์ (2 47ไบต์, 128 ไบต์) และแม้ว่ามันจะสามารถจัดการกับฐานข้อมูลขนาดใหญ่ได้ แต่ SQLite จะเก็บฐานข้อมูลทั้งหมดไว้ในดิสก์ไฟล์เดียวและระบบไฟล์จำนวนมากจะ จำกัด ขนาดสูงสุดของไฟล์ไว้ที่บางอย่างที่น้อยกว่านี้ ดังนั้นหากคุณใคร่ครวญฐานข้อมูลของขนาดนี้คุณควรพิจารณาใช้เอ็นจิ้นฐานข้อมูลลูกค้า / เซิร์ฟเวอร์ที่กระจายเนื้อหาในไฟล์ดิสก์หลาย ๆ ไฟล์และอาจข้ามหลายวอลุ่ม โดยทั่วไปแล้วฉันเห็นด้วยกับสิ่งนี้ แต่ฉันรู้สึกประหลาดใจเมื่อเรียนรู้ว่าขีด จำกัด สูงสุดของ SQLite นั้นสูงมาก! จากประสบการณ์ของฉันฉันได้ใช้ฐานข้อมูล SQL Server จำนวนน้อยขนาด ~ 30-100GB ฉันยังทำงานทางอ้อมกับฐานข้อมูลขนาดใหญ่กว่าโดยใช้ Oracle, Postgres หรือ Cassandra อย่างน้อยสำหรับความรู้ของฉันไม่มีใครเข้าใกล้ …

7
เขียนใน C เพื่อประสิทธิภาพ? [ปิด]
ฉันรู้ว่าฉันเคยได้ยินบ่อยๆว่า C มักจะมีข้อได้เปรียบด้านประสิทธิภาพมากกว่า C ++ ฉันไม่ได้คิดอย่างอื่นจนกว่าฉันจะรู้ว่า MSVC ดูเหมือนจะไม่สนับสนุนมาตรฐานใหม่ล่าสุดของ C แต่รุ่นล่าสุดรองรับ C99 (เท่าที่ฉันรู้) ฉันวางแผนที่จะเขียนไลบรารีด้วยโค้ดบางอย่างเพื่อให้แสดงผลใน OpenGL เพื่อให้ฉันสามารถนำมาใช้ซ้ำได้ ฉันวางแผนที่จะเขียนไลบรารีใน C เนื่องจากการเพิ่มประสิทธิภาพใด ๆ ก็ยินดีต้อนรับเมื่อมันมาถึงกราฟิก แต่มันจะคุ้มหรือไม่ รหัสที่ใช้ไลบรารีน่าจะเขียนใน C ++ และฉันต้องการรหัสใน C ++ โดยทั่วไป อย่างไรก็ตามถ้ามันสร้างความแตกต่างเล็กน้อยในการแสดงฉันก็น่าจะไปกับ C อาจสังเกตได้ว่าห้องสมุดนี้จะเป็นสิ่งที่ฉันจะใช้ในการทำงานกับ Windows / OS X / Linux และฉันอาจรวบรวมทุกอย่างโดยพื้นฐาน (MSVC สำหรับ Windows, Clang หรือ GCC สำหรับ OS X และ GCC สำหรับ …

2
วิธีการออกแบบระบบการแจ้งเตือนที่ปรับขนาดได้? [ปิด]
ฉันต้องเขียนผู้จัดการระบบการแจ้งเตือน นี่คือข้อกำหนดของฉัน: ฉันต้องสามารถส่งการแจ้งเตือนบนแพลตฟอร์มที่แตกต่างกันซึ่งอาจแตกต่างกันโดยสิ้นเชิง (สำหรับตัวอย่างฉันต้องสามารถส่ง SMS หรืออีเมลได้) บางครั้งการแจ้งเตือนอาจเหมือนกันสำหรับผู้รับทุกคนสำหรับแพลตฟอร์มที่กำหนด แต่บางครั้งอาจเป็นการแจ้งเตือนต่อผู้รับ (หรือหลายคน) ต่อแพลตฟอร์ม การแจ้งเตือนแต่ละครั้งสามารถมีส่วนของข้อมูลเฉพาะแพลตฟอร์มได้ (สำหรับตัวอย่าง MMS ที่มีเสียงหรือภาพ) ระบบจำเป็นต้องปรับขนาดได้ฉันต้องสามารถส่งการแจ้งเตือนจำนวนมากโดยไม่ต้องหยุดทำงานทั้งแอปพลิเคชันหรือเซิร์ฟเวอร์ มันเป็นกระบวนการสองขั้นตอนแรกที่ลูกค้าอาจพิมพ์ข้อความและเลือกแพลตฟอร์มที่จะส่งไปและควรสร้างการแจ้งเตือนเพื่อประมวลผลแบบเรียลไทม์ในภายหลัง จากนั้นระบบจะต้องส่งการแจ้งเตือนไปยังผู้ให้บริการแพลตฟอร์ม สำหรับตอนนี้ฉันจบลงด้วยบางอย่าง แต่ฉันไม่รู้ว่ามันจะปรับขนาดได้หรือถ้ามันเป็นการออกแบบที่ดี ฉันว่าวัตถุต่อไปนี้ (ในภาษาเทียม): Notificationวัตถุทั่วไป: class Notification { String $message; Payload $payload; Collection<Recipient> $recipients; } ปัญหาเกี่ยวกับวัตถุต่อไปนี้จะเกิดอะไรขึ้นถ้าฉันมีผู้รับ 1,000,000? แม้ว่าRecipientวัตถุนั้นจะเล็กมากมันก็จะใช้หน่วยความจำมากเกินไป ฉันสามารถสร้างการแจ้งเตือนได้หนึ่งรายการต่อผู้รับ แต่ผู้ให้บริการแพลตฟอร์มบางรายกำหนดให้ฉันส่งเป็นชุดซึ่งหมายความว่าฉันต้องกำหนดหนึ่งการแจ้งเตือนที่มีผู้รับหลายคน การแจ้งเตือนที่สร้างขึ้นแต่ละครั้งสามารถเก็บไว้ในที่เก็บข้อมูลถาวรเช่น DB หรือ Redis มันจะเป็นการดีหรือไม่ที่จะรวมกันในภายหลังเพื่อให้แน่ใจว่าสามารถปรับขนาดได้หรือไม่? ในขั้นตอนที่สองฉันต้องดำเนินการการแจ้งเตือนนี้ แต่ฉันจะแยกแยะการแจ้งเตือนกับผู้ให้บริการแพลตฟอร์มที่เหมาะสมได้อย่างไร ฉันควรใช้วัตถุเช่นMMSNotificationขยายabstract Notificationหรือไม่ หรือสิ่งที่ต้องการNotification.setType('MMS')? เพื่อให้สามารถประมวลผลการแจ้งเตือนจำนวนมากในเวลาเดียวกันฉันคิดว่าระบบคิวการส่งข้อความเช่น RabbitMQ อาจเป็นเครื่องมือที่เหมาะสม …

10
อะไรคือจุดใช้ของรายการเหนือเวคเตอร์ใน C ++?
ฉันใช้การทดลอง 3 แบบที่เกี่ยวข้องกับรายการ C ++ และเวกเตอร์ ผู้ที่มีเวกเตอร์พิสูจน์ได้ว่ามีประสิทธิภาพมากขึ้นแม้ว่าจะมีการแทรกอยู่ตรงกลางจำนวนมาก ดังนั้นคำถาม: ในกรณีใดรายการที่มีเหตุผลมากกว่าเวคเตอร์? หากเวกเตอร์ดูเหมือนจะมีประสิทธิภาพมากขึ้นในกรณีส่วนใหญ่และพิจารณาว่าสมาชิกของพวกเขาเหมือนกันแล้วจะมีข้อได้เปรียบอะไรที่เหลืออยู่สำหรับรายการ? สร้างจำนวนเต็ม N และวางไว้ในคอนเทนเนอร์เพื่อให้คอนเทนเนอร์ยังคงเรียงลำดับ การแทรกได้รับการดำเนินการอย่างไร้เดียงสาโดยการอ่านองค์ประกอบทีละหนึ่งและแทรกใหม่ขวาก่อนที่จะมีขนาดใหญ่ขึ้นครั้งแรก ด้วยรายการเวลาจะผ่านหลังคาเมื่อมิติเพิ่มขึ้นเมื่อเทียบกับเวกเตอร์ แทรกจำนวนเต็ม N ที่ส่วนท้ายของคอนเทนเนอร์ สำหรับรายการและเวกเตอร์เวลาเพิ่มขึ้นตามลำดับความสำคัญเท่ากันแม้ว่ามันจะเร็วขึ้น 3 เท่าเมื่อใช้เวกเตอร์ แทรกจำนวนเต็ม N ในคอนเทนเนอร์ เริ่มจับเวลา เรียงลำดับคอนเทนเนอร์โดยใช้ list.sort สำหรับรายการและ std :: sort สำหรับเวกเตอร์ หยุดจับเวลา อีกครั้งเวลาเพิ่มขึ้นตามลำดับความสำคัญเท่ากัน แต่มันจะเร็วขึ้นโดยเฉลี่ย 5 เท่าด้วยเวกเตอร์ ฉันอาจทำการทดสอบต่อไปและหาตัวอย่างสองสามข้อที่รายการจะพิสูจน์ได้ดีขึ้น แต่ประสบการณ์ร่วมกันของพวกคุณที่อ่านข้อความนี้อาจให้คำตอบที่มีประสิทธิผลมากขึ้น คุณอาจเจอสถานการณ์ที่รายการใช้งานได้สะดวกกว่าหรือทำได้ดีกว่า

18
ทีมพัฒนาสามารถป้องกันประสิทธิภาพที่ช้าในแอพสำหรับผู้บริโภคได้อย่างไร
เมื่อก่อนหน้านี้ฉันถามสิ่งที่รับผิดชอบเกี่ยวกับซอฟต์แวร์ช้าคำตอบสองสามข้อที่ฉันได้รับบอกว่าเป็นปัญหาทางสังคมและการจัดการ: นี่ไม่ใช่ปัญหาด้านเทคนิค แต่เป็นปัญหาด้านการตลาดและการจัดการ .... ในที่สุดผู้จัดการผลิตภัณฑ์มีหน้าที่เขียนรายละเอียดสำหรับสิ่งที่ผู้ใช้ควรได้รับ มีหลายสิ่งหลายอย่างที่ผิดไป: ผู้จัดการผลิตภัณฑ์ล้มเหลวในการตอบสนองต่อปุ่มในสเป็ค ... ทีมงาน QA ทำหน้าที่ทดสอบปานกลางกับสเป็คปานกลาง ... หากการจัดการผลิตภัณฑ์และพนักงานควบคุมคุณภาพกำลังนอนหลับอยู่ โปรแกรมเมอร์เราไม่สามารถชดเชยได้ - บ๊อบเมอร์ฟี่ย์ ผู้คนทำงานกับแอพที่ดี ในขณะที่ทำงานปัญหาด้านประสิทธิภาพจะคืบคลานเข้ามาเหมือนกับข้อบกพร่อง ข้อแตกต่างคือ - ข้อบกพร่องคือ "ไม่ดี" - พวกเขาร้องออกมา "หาฉันและแก้ไขฉัน" ปัญหาประสิทธิภาพการทำงานเพียงแค่นั่งที่นั่นและแย่ลง โปรแกรมเมอร์มักคิดว่า "รหัสของฉันจะไม่มีปัญหาด้านประสิทธิภาพ แต่ฝ่ายบริหารจำเป็นต้องซื้อเครื่องจักรที่ใหม่กว่า / ใหญ่กว่า / เร็วกว่า" ความจริงก็คือหากนักพัฒนาซอฟต์แวร์ค้นหาปัญหาด้านประสิทธิภาพเป็นระยะ ๆ ( ซึ่งจริง ๆ แล้วง่ายมาก ) พวกเขาก็สามารถกำจัดพวกมันได้ - Mike Dunlavey ดังนั้นหากนี่เป็นปัญหาทางสังคมกลไกทางสังคมที่องค์กรสามารถจัดทำขึ้นเพื่อหลีกเลี่ยงการส่งมอบซอฟต์แวร์ที่ช้าแก่ลูกค้า
32 performance  ui 

8
อะไรเป็นสาเหตุของประสิทธิภาพที่ไม่ดีในแอพสำหรับผู้บริโภค [ปิด]
Comcast DVRของฉันใช้เวลาอย่างน้อยสามวินาทีในการตอบสนองต่อทุกปุ่มกดควบคุมระยะไกลทำให้งานง่าย ๆ ในการรับชมทีวีกลายเป็นประสบการณ์การกดปุ่มที่น่าผิดหวัง iPhone ของฉันใช้เวลาอย่างน้อยสิบห้าวินาทีในการแสดงข้อความและล่ม¼ครั้งที่ฉันพยายามเปิดแอพ iPod เพียงแค่การรับและอ่านอีเมลมักใช้เวลานานกว่าหนึ่งนาที แม้แต่ navcom ในรถของฉันก็มีการควบคุมที่นุ่มนวลและไม่ตอบสนองและมักจะกลืนอินพุตที่ต่อเนื่องหากฉันแยกพวกมันออกจากกันไม่กี่วินาที อุปกรณ์เหล่านี้เป็นเครื่องมือสำหรับผู้ใช้ปลายทางที่ใช้ฮาร์ดแวร์ซึ่งการใช้งานควรเป็นสิ่งสำคัญยิ่ง แต่อุปกรณ์เหล่านี้ก็ล้มเหลวเมื่อตอบสนองและแฝงอยู่ในระดับพื้นฐาน ซอฟต์แวร์ของพวกเขาเป็นเพียงช้าเกินไป อะไรอยู่เบื้องหลังสิ่งนี้ มันเป็นปัญหาทางเทคนิคหรือปัญหาสังคมหรือไม่? ใครหรืออะไรรับผิดชอบ เป็นเพราะสิ่งเหล่านี้ทั้งหมดถูกเขียนในภาษาที่มีการจัดการและเก็บรวบรวมขยะมากกว่ารหัสท้องถิ่นหรือไม่? โปรแกรมเมอร์แต่ละคนเป็นผู้เขียนซอฟต์แวร์สำหรับอุปกรณ์เหล่านี้หรือไม่? ในทุกกรณีผู้พัฒนาแอปรู้ว่าแพลตฟอร์มฮาร์ดแวร์แบบใดที่พวกเขากำหนดเป้าหมายและความสามารถของมันคืออะไร พวกเขาไม่นำมาพิจารณาหรือไม่? เขาเป็นคนที่พูดซ้ำ ๆ ว่า "การทำให้เกิดประโยชน์สูงสุดเป็นรากเหง้าของความชั่วทั้งหมด" เขาพาพวกเขาหลงทางหรือเปล่า? มันเป็นความคิดของ "โอ้เป็นเพียง 100ms เพิ่มเติม" ทุกครั้งจนกว่ามิลลิวินาทีเหล่านั้นทั้งหมดเพิ่มขึ้นถึงนาที? เป็นความผิดของฉันหรือเปล่าที่ต้องซื้อผลิตภัณฑ์เหล่านี้ตั้งแต่แรก? นี่เป็นคำถามอัตนัยกับไม่มีคำตอบเดียว แต่ฉันมักผิดหวังเพื่อดูคำตอบจำนวนมากดังนั้นที่นี่บอกว่า "โอ้ไม่ต้องกังวลเกี่ยวกับความเร็วรหัสประสิทธิภาพการทำงานไม่ได้เรื่อง" เมื่อเห็นอย่างชัดเจนในบางจุดมันไม่เรื่อง ผู้ใช้ปลายทางที่ติดอยู่กับประสบการณ์ที่ช้าไม่ตอบสนองและน่ากลัว ดังนั้นสิ่งที่จุดผิดพลาดสำหรับผลิตภัณฑ์เหล่านี้? เราในฐานะโปรแกรมเมอร์สามารถทำอะไรได้บ้างเพื่อหลีกเลี่ยงการสร้างความเจ็บปวดให้กับลูกค้าของเรา?

6
เหตุใด Quicksort จึงดีกว่าอัลกอริธึมการเรียงลำดับอื่น ๆ ในทางปฏิบัติ
นี่คือ repost ของคำถามเกี่ยวกับ cs.SEโดยJanoma หน่วยกิตและเครดิตทั้งหมดของเขาหรือของซีเอส ในหลักสูตรอัลกอริธึมมาตรฐานเราถูกสอนว่าquicksortคือ O (n log n) โดยเฉลี่ยและ O (n²) ในกรณีที่แย่ที่สุด ในเวลาเดียวกันอัลกอริธึมการเรียงลำดับอื่น ๆ กำลังศึกษาซึ่งเป็น O (n log n) ในกรณีที่เลวร้ายที่สุด (เช่นการผสานและheapsort ) และแม้แต่เวลาเชิงเส้นในกรณีที่ดีที่สุด (เช่นbubbleort ) แต่มีความต้องการหน่วยความจำเพิ่มเติม หลังจากมองผ่าน ๆ ในเวลาที่วิ่งเร็วขึ้นมันเป็นเรื่องธรรมดาที่จะบอกว่า quicksort ไม่ควรมีประสิทธิภาพเหมือนกับคนอื่น ๆ นอกจากนี้ให้พิจารณาว่านักเรียนเรียนรู้ในหลักสูตรการเขียนโปรแกรมขั้นพื้นฐานที่การเรียกซ้ำโดยทั่วไปไม่ดีนักเพราะอาจใช้หน่วยความจำมากเกินไป ฯลฯ ดังนั้น (และแม้ว่านี่จะไม่ใช่ข้อโต้แย้งจริง ๆ ) สิ่งนี้ทำให้เกิดความคิดว่า ดีจริงๆเพราะเป็นอัลกอริทึมแบบเรียกซ้ำ เหตุใด quicksort จึงมีประสิทธิภาพสูงกว่าอัลกอริทึมการเรียงลำดับอื่น ๆ ในทางปฏิบัติ มันเกี่ยวข้องกับโครงสร้างของข้อมูลจริงหรือไม่? มันเกี่ยวข้องกับการทำงานของหน่วยความจำในคอมพิวเตอร์หรือไม่? ฉันรู้ว่าความทรงจำบางอย่างนั้นเร็วกว่าวิธีอื่น …

2
การเขียนความหน่วงต่ำ Java [ปิด]
มีเทคนิคเฉพาะ Java (สิ่งที่จะไม่ใช้กับ C ++) สำหรับการเขียนรหัส latency ต่ำใน Java? ฉันมักจะเห็นบทบาทที่มีความล่าช้าต่ำของ Java และพวกเขาขอประสบการณ์ในการเขียน Java ที่มีความหน่วงต่ำซึ่งบางครั้งก็ดูเหมือนเป็นช่วงเวลาสั้น ๆ เพียงคิดว่าฉันสามารถคิดว่าเป็นประสบการณ์กับ JNI จ้าง I / O โทรไปยังรหัสพื้นเมือง อาจเป็นไปได้ที่จะใช้รูปแบบการทำลายซึ่งไม่ใช่เทคโนโลยีจริง มีเคล็ดลับเฉพาะ Java สำหรับการเขียนรหัส latency ต่ำหรือไม่ ฉันรู้ว่ามี Java Real Time แบบเรียลไทม์ แต่ฉันถูกเตือนแบบเรียลไทม์ไม่เหมือนกับ latency ต่ำ ....

15
ในยุคของการคำนวณที่ทันสมัยใน 'แอพทางธุรกิจทั่วไป' - เหตุใดประสิทธิภาพจึงมีความสำคัญ [ปิด]
นี่อาจเป็นคำถามแปลก ๆ สำหรับพวกคุณบางคน ฉันเป็นโปรแกรมเมอร์ Java มือสมัครเล่น ฉันได้พัฒนาเกมหลายเกมโปรแกรม AI ที่สร้างเพลงอีกโปรแกรมหนึ่งสำหรับการวาดภาพและอื่น ๆ ที่คล้ายคลึงกัน นี่เป็นการบอกคุณว่าฉันมีประสบการณ์ในการเขียนโปรแกรม แต่ไม่ใช่ในการพัฒนาแอปพลิเคชันทางธุรกิจอย่างมืออาชีพ ฉันเห็นจำนวนมากพูดคุยเกี่ยวกับเว็บไซต์นี้เกี่ยวกับประสิทธิภาพ ผู้คนมักถกเถียงกันว่าอัลกอริธึมที่มีประสิทธิภาพมากที่สุดใน C # คืออะไรเพื่อทำงานหรือทำไม Python จึงช้าและ Java เร็วขึ้นเป็นต้น สิ่งที่ฉันพยายามที่จะเข้าใจคือ: ทำไมเรื่องนี้? มีพื้นที่เฉพาะในการคำนวณที่ฉันเห็นว่าทำไมเรื่องประสิทธิภาพ: เกมที่มีการคำนวณนับหมื่นเกิดขึ้นทุกวินาทีในลูปการปรับปรุงอย่างต่อเนื่องหรือระบบระดับต่ำที่โปรแกรมอื่น ๆ ใช้เช่น OS และ VM เป็นต้น แต่สำหรับแอปทางธุรกิจระดับสูงตามปกติทั่วไปทำไมประสิทธิภาพถึงสำคัญ? ฉันเข้าใจได้ว่าทำไมมันถึงมีความสำคัญเมื่อหลายสิบปีก่อน คอมพิวเตอร์ช้าลงมากและมีหน่วยความจำน้อยกว่าดังนั้นคุณต้องคิดอย่างรอบคอบเกี่ยวกับสิ่งเหล่านี้ แต่วันนี้เรามีหน่วยความจำมากเพื่อให้อะไหล่และคอมพิวเตอร์เป็นอย่างรวดเร็ว: ไม่ได้จริง ๆว่าถ้าอัลกอริทึม Java โดยเฉพาะอย่างยิ่งคือ O (n ^ 2)? มันจะสร้างความแตกต่างให้กับผู้ใช้ปลายทางของแอพธุรกิจทั่วไปนี้หรือไม่? เมื่อคุณกดปุ่ม GUI ในแอพธุรกิจทั่วไปและเบื้องหลังมันเรียกใช้อัลกอริทึม O (n …

10
เทมเพลต“ metaprogramming” ใน Java เป็นความคิดที่ดีหรือไม่
มีไฟล์ต้นฉบับในโครงการที่ค่อนข้างใหญ่ที่มีฟังก์ชั่นหลายอย่างที่มีความอ่อนไหวต่อประสิทธิภาพอย่างมาก (เรียกว่าล้านครั้งต่อวินาที) ในความเป็นจริงผู้ดูแลก่อนหน้านี้ตัดสินใจที่จะเขียน 12 สำเนาของฟังก์ชั่นที่แตกต่างกันเล็กน้อยมากเพื่อประหยัดเวลาที่จะใช้ในการตรวจสอบเงื่อนไขในฟังก์ชั่นเดียว น่าเสียดายที่นี่หมายถึงรหัสนี้เป็น PITA ที่จะรักษาไว้ ฉันต้องการลบรหัสที่ซ้ำกันทั้งหมดและเขียนเพียงหนึ่งเทมเพลต อย่างไรก็ตามภาษา, Java, ไม่รองรับเทมเพลตและฉันไม่แน่ใจว่ายาชื่อสามัญเหมาะสำหรับสิ่งนี้ แผนปัจจุบันของฉันคือการเขียนแทนไฟล์ที่สร้างฟังก์ชั่น 12 ชุด (ตัวขยายเทมเพลตแบบใช้ครั้งเดียวเท่านั้นจริง) แน่นอนฉันจะให้คำอธิบายมากมายว่าทำไมไฟล์จะต้องถูกสร้างขึ้นโดยทางโปรแกรม ความกังวลของฉันคือสิ่งนี้จะนำไปสู่ความสับสนของผู้ดูแลในอนาคตและอาจแนะนำข้อผิดพลาดที่น่ารังเกียจหากพวกเขาลืมสร้างไฟล์ใหม่หลังจากแก้ไขมันหรือ (ยิ่งแย่กว่า) หากพวกเขาแก้ไขไฟล์ที่สร้างโดยทางโปรแกรม โชคไม่ดีที่การเขียนใหม่ทั้งหมดใน C ++ ฉันไม่เห็นวิธีการแก้ไข ประโยชน์ของวิธีนี้มีมากกว่าข้อเสียหรือไม่ ฉันควรจะแทน: เพิ่มประสิทธิภาพการทำงานและใช้ฟังก์ชั่นเดียวที่บำรุงรักษาได้ เพิ่มคำอธิบายว่าทำไมฟังก์ชันจึงต้องทำซ้ำ 12 ครั้งและรับภาระการบำรุงรักษาอย่างสง่างาม พยายามใช้ข้อมูลทั่วไปเป็นเทมเพลต (อาจใช้ไม่ได้ผล) ตะโกนใส่ผู้ดูแลเก่าเพื่อสร้างรหัสขึ้นอยู่กับประสิทธิภาพในฟังก์ชั่นเดียว วิธีอื่นในการรักษาประสิทธิภาพและการบำรุงรักษา? ป.ล. เนื่องจากการออกแบบของโครงการไม่ดีการทำโปรไฟล์ฟังก์ชั่นค่อนข้างยุ่งยาก ... อย่างไรก็ตามผู้ดูแลคนก่อนทำให้ฉันมั่นใจว่าประสิทธิภาพในการทำงานนั้นไม่เป็นที่ยอมรับ ฉันคิดว่าเขามีความหมายมากกว่า 5% แม้ว่าจะเป็นการคาดเดาที่สมบูรณ์ในส่วนของฉัน บางทีฉันควรทำอย่างละเอียดหน่อย สำเนา 12 ชุดทำหน้าที่คล้ายกันมาก แต่มีความแตกต่างเล็กน้อย ความแตกต่างอยู่ในสถานที่ต่าง ๆ ตลอดทั้งฟังก์ชั่นดังนั้นน่าเสียดายที่มีข้อความมากมายที่มีเงื่อนไข การทำงานมีประสิทธิภาพ …

10
Simple vs Complex (แต่มีประสิทธิภาพด้านประสิทธิภาพ) โซลูชัน - ตัวเลือกใดและเมื่อใด
ฉันเขียนโปรแกรมมาสองสามปีและมักพบว่าตัวเองอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก มีสองวิธีคือ - วิธีการหนึ่งเป็นแบบง่ายเช่นวิธีการแบบง่ายเข้าใจและบำรุงรักษาได้ง่ายขึ้น มันเกี่ยวข้องกับความซ้ำซ้อนบางงานพิเศษ (IO เพิ่มเติมการประมวลผลพิเศษ) และดังนั้นจึงไม่ใช่ทางออกที่ดีที่สุด แต่วิธีอื่น ๆ ใช้วิธีการที่ซับซ้อนยากที่จะนำไปใช้มักจะเกี่ยวข้องกับการปฏิสัมพันธ์ระหว่างโมดูลจำนวนมากและเป็นโซลูชันที่มีประสิทธิภาพ โซลูชันใดที่ฉันควรพยายามเมื่อฉันไม่มี SLA ที่มีประสิทธิภาพสูงเพื่อตอบสนองและแม้แต่โซลูชันที่เรียบง่ายสามารถตอบสนองประสิทธิภาพ SLA ได้ ฉันรู้สึกรังเกียจในหมู่ผู้พัฒนาเพื่อนของฉันสำหรับวิธีแก้ปัญหาอย่างง่าย เป็นวิธีปฏิบัติที่ดีหรือไม่ในการหาวิธีแก้ปัญหาที่ซับซ้อนที่สุดหาก SLA ประสิทธิภาพของคุณสามารถพบได้โดยวิธีง่ายๆ

3
วิธีการจัดเก็บข้อมูลชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ
ฉันต้องการจัดเก็บและสามารถสืบค้นข้อมูลอนุกรมเวลาจำนวนมากได้ คุณสมบัติของข้อมูลมีดังนี้: จำนวนซีรีส์: ประมาณ 12.000 (หนึ่งหมื่นสองพัน) จำนวนจุดข้อมูลทั่วโลก: ประมาณ 500,000 ต่อเดือน (ห้าร้อยล้าน) ประเภทค่าผสม: จุดข้อมูลส่วนใหญ่เป็นค่าจุดลอยตัวส่วนที่เหลือเป็นสตริง ระยะเวลาการสุ่มตัวอย่าง: ตัวแปรระหว่างซีรี่ส์และภายในซีรี่ส์ การประทับเวลา: ความแม่นยำมิลลิวินาที ระยะเวลาการเก็บข้อมูล: หลายปีโดยไม่มีการลดลงหรือการสุ่มตัวอย่าง คลังข้อมูลจะต้องถูกสร้างขึ้นในแบบเรียลไทม์ แต่มีความล่าช้าพอสมควร (~ 1 ชั่วโมง) เป็นที่ยอมรับ ข้อมูลที่ผ่านมาสามารถสร้างใหม่ได้ถ้าต้องการ แต่มีค่าใช้จ่ายสูง บางครั้ง แต่ค่อนข้างน้อยข้อมูลในอดีตบางอย่างจำเป็นต้องได้รับการอัปเดต คุณสมบัติของข้อความค้นหาที่จินตนาการ: ข้อความค้นหาส่วนใหญ่ที่มีข้อมูลจะเป็นแบบสอบถามแบบอิงตามเวลา ตั้งแต่วันหนึ่งถึงหลายเดือน / ปี 90% + จะสอบถามเกี่ยวกับข้อมูลล่าสุด ข้อกำหนดอื่น ๆ : การแก้ปัญหาจะต้องเป็นฟรีในเบียร์ฟรีและโอเพนซอร์สโดยเฉพาะอย่างยิ่ง ความคิดเริ่มต้นของฉันคือการใช้ PyTables / Pandas กับไฟล์ HDF5เพื่อเก็บแบ็คเอนด์แทนฐานข้อมูล SQL คำถาม: สมมติว่า …

4
ทำไมหลังจากรีสตาร์ทแต่ละครั้งไซต์. NET ภายในเครื่องของฉันต้องใช้เวลาโหลดเป็นครั้งแรก [ปิด]
ฉันกำลังพัฒนาเว็บไซต์โดยใช้แพลตฟอร์ม. NET ฉันมักจะปรับใช้เว็บไซต์เหล่านี้ใน IIS ท้องถิ่นของฉันเพื่อให้ฉันสามารถทดสอบพวกเขาและดูการทำงานของพวกเขาก่อนที่จะมีชีวิตอยู่ อย่างไรก็ตามทุกครั้งที่ฉันรีสตาร์ท windows ดูเหมือนว่าเว็บไซต์ใช้เวลานานในการรันครั้งแรก ฉันรู้เกี่ยวกับ JIT และฉันก็ตระหนักถึงคำถามนี้แต่ก็ไม่ตอบคำถามของฉัน JIT เกิดขึ้นทุกครั้งที่คุณรีสตาร์ท windows หรือไม่ มันเกี่ยวข้องกับการสร้างกระบวนการ w3wp.exe หรือไม่? ทำไมเว็บไซต์จึงช้าสำหรับคำขอแรกหลังจากรีสตาร์ทแต่ละครั้ง
27 .net  asp.net  performance  iis  jit 

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