คุณทำอะไรให้เหมาะสม [ปิด]


19

โดยทั่วไปแล้วการเพิ่มประสิทธิภาพประเภทใดที่คุณมักใช้ในการออกแบบซอฟต์แวร์

คุณเป็นประเภทที่ชอบเพิ่มประสิทธิภาพการออกแบบของคุณหรือไม่

  • เวลาในการพัฒนา (เช่นเขียนอย่างรวดเร็วและ / หรือง่ายต่อการบำรุงรักษา)?
  • ระยะเวลาดำเนินการ
  • พื้นที่เก็บข้อมูล (RAM, DB, Disc, ฯลฯ )

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


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

คำตอบ:


40

ซ่อมบำรุง

จากนั้นทำโปรไฟล์หากจำเป็นและปรับให้เหมาะสมสำหรับความเร็ว ฉันมีความต้องการจัดเก็บน้อยมาก - ไม่น้อยกว่า 10 ปีที่ผ่านมา ก่อนหน้านั้นฉันทำ


8
+1 หากคุณปรับให้เหมาะสมสำหรับการบำรุงรักษาที่จะเริ่มต้นจากนั้นจะง่ายขึ้นที่จะเพิ่มประสิทธิภาพสำหรับความเร็วหรือการจัดเก็บในภายหลังหากพิสูจน์จำเป็น
Carson63000

คุณยังคงต้องพิจารณาเวลาในการประมวลผลและการจัดเก็บอย่างน้อยคุณจึงไม่ต้องเลือกวิธีที่มากเกินไป

@ ถ้าคุณกำลังปรับให้เหมาะสมสำหรับเวลาของนักพัฒนาคุณอาจ (มากกว่าจะเป็นไปได้) เลือก algoritms ที่ง่ายต่อการอ่าน / เขียนในภาษาที่กำหนด เฉพาะในภายหลังและเฉพาะในกรณีที่ประสิทธิภาพกลายเป็นปัญหาคุณทั้งสองจะต้อง (ตามที่ @Tim บอกว่า) รับ profiler
Jason Whitehorn

@ Jason ฉันไม่เห็นด้วยอย่างยิ่ง คุณควรคุ้นเคยกับคุณลักษณะด้านประสิทธิภาพของอัลกอริทึมที่คุณเลือกเพื่อให้คุณเลือกใช้งานที่เหมาะสม เช่นเลือก ArrayList เมื่อคุณต้องการใช้เป็นหลักในการค้นหารหัสไปรษณีย์อาจไม่ดี

1
@ Thorbjørnฉันไม่เห็นด้วยกับคุณ ในความเป็นจริงฉันคิดว่าคุณถูกต้องในความสนใจนั้นควรให้อัลกอริทึมที่อยู่ในมือ อย่างไรก็ตามฉันคิดว่าความคิดเห็นของฉันแตกต่างกันตรงไหนในความคิดของฉันความคิดของอัลกอริธึมที่เลือกคือสิ่งที่เรียนรู้จากประสบการณ์และแก้ไขเมื่อปัญหาเกิดขึ้นเท่านั้น คุณถูกต้องในจุดของคุณฉันไม่เห็นความจำเป็นในการปรับให้เหมาะสมสำหรับค่าใช้จ่ายที่น้อยกว่าที่อ่านได้ / ยาวกว่าในการใช้รหัส
Jason Whitehorn

27

เวลาในการพัฒนา

การประมวลผลและการเก็บรักษาราคาถูก เวลาของคุณไม่ได้

เพียงที่จะต้องทราบ:

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

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


4
กฎของมัวร์สิ้นสุดลงเมื่อประมาณสองปีที่แล้ว อาจถึงเวลาที่จะเริ่มคิดเกี่ยวกับการเกิดพร้อมกันและใช้แกนพิเศษเหล่านั้น นั่นเป็นวิธีเดียวที่คุณจะได้รับวงจรนาฬิการาคาถูกในอนาคต
Robert Harvey

3
เพื่อให้ถูกต้องกฎของมัวร์ยังคงแข็งแกร่งโดยเพิ่มจำนวนทรานซิสเตอร์สองเท่าบนชิปทุก ๆ 2 ปีโดยประมาณซึ่งเป็นสิ่งที่ทำให้สามารถวางตำแหน่งของคอร์หลายแกนบนแม่พิมพ์เดียว สิ่งที่ได้จบลงแล้วคือ 'อาหารกลางวันฟรี' ที่เพิ่มจำนวนรอบต่อวินาที
Dominique McDonnell

1
"การประมวลผลและการเก็บรักษาราคาถูก" CPU cache และความเร็วบัสไม่ได้ พวกเขาเป็นคอขวดประสิทธิภาพหลักวันนี้
mojuba

3
ฉันเห็นด้วยกับสิ่งนี้อย่างสมบูรณ์ การบำรุงรักษาโค้ดที่อ่านได้โดยใช้เครื่องมือที่เหมาะสมสำหรับงานและการปฏิบัติตามมาตรฐานที่ตกลงกันไว้ของ บริษัท ของคุณจะช่วยลดเวลาที่ใช้ในการพิมพ์รหัสลงในคอมพิวเตอร์ได้อย่างมากช่วยให้ บริษัท ของคุณประหยัดเงินได้มาก เวลาของคุณดีกว่าการใช้วิศวกรรมมากกว่าการพิมพ์
Matt DiTrolio

1
@ การเรียกเก็บเงิน: หรือหากคุณกำลังทำการฝังอยู่ซึ่งคุณอาจมีข้อ จำกัด อย่างหนักซึ่งจะทำให้ต้นทุนผลิตภัณฑ์สูงขึ้นอย่างมีนัยสำคัญหากคุณมีค่าเกิน หรือบางครั้งสำหรับซอฟต์แวร์เซิร์ฟเวอร์ - ถ้าใครบางคนสามารถปรับปรุงการประมวลผลบนเซิร์ฟเวอร์ของ Google ได้ 1% นั่นจะเป็นการประหยัดเล็กน้อย
David Thornley

12

ประสบการณ์ของผู้ใช้

นี่คือค่าเดียวที่สำคัญสำหรับลูกค้าของคุณ

เวลาในการพัฒนามีความสำคัญน้อยกว่า ฉันสามารถเขียนแอปพลิเคชันบรรทัดคำสั่งที่มีคุณลักษณะครบถ้วนได้เร็วกว่า GUI แต่ถ้านางเจนไม่สามารถหาวิธีทำให้รายงานที่เธอต้องการคายออกมาได้มันก็ไร้ประโยชน์

การบำรุงรักษามีความสำคัญน้อยกว่า ฉันสามารถซ่อมแซมกระดานหกได้อย่างรวดเร็วจริง ๆ แต่ถ้ามันอยู่กลางป่าผู้ใช้ไม่สามารถค้นหาได้

เวลาประมวลผลมีความสำคัญน้อยกว่า ถ้าฉันสร้างรถที่มีความเร็ว 0 ถึง 60 วินาทีผู้ใช้จะไม่สามารถบังคับรถได้

สุนทรียศาสตร์มีความสำคัญน้อยกว่า ฉันวาดภาพ Mona Lisa ได้ แต่ถ้าเธอถูกซ่อนอยู่หลังกำแพงไม่มีใครเห็นเธอเลย

ประสบการณ์ผู้ใช้เป็นค่าเดียวที่สำคัญ การสร้างแอปพลิเคชันที่ทำสิ่งที่ผู้ใช้ต้องการในแบบที่ผู้ใช้คาดหวังไว้คือความสำเร็จขั้นสูงสุด


ขออภัย Joeri ฉันถูกพาไปแก้ไขด้วย
Malfist

มันเป็นวิกิชุมชนสำหรับบางสิ่งใช่ไหม ;)
Joeri Sebrechts

8

มีเพียงสิ่งเดียวเท่านั้นที่จะปรับให้เหมาะสมและเป็น:

ลูกค้าของคุณต้องการอะไร

ลูกค้าของคุณต้องการโปรแกรมที่เร็วที่สุดเท่าที่จะทำได้หรือไม่? ปรับให้เหมาะสมสำหรับความเร็ว

ลูกค้าของคุณต้องการความน่าเชื่อถือแน่นอนหรือไม่? ปรับให้เหมาะสมสำหรับสิ่งนั้น

พวกเขาต้องการมันส่งในวันพรุ่งนี้หรือมันจะไร้ประโยชน์? ปรับให้เหมาะสมสำหรับความเร็วของการพัฒนา

ทำงานบนอุปกรณ์ที่ จำกัด ทรัพยากรอย่างไม่น่าเชื่อใช่ไหม ปรับให้เหมาะสมสำหรับทรัพยากรเหล่านั้น


สิ่งเดียวที่จับได้คือพวกเขามักไม่รู้ว่าต้องการอะไรหรือมีความคาดหวังเกี่ยวกับสิ่งที่เป็นไปได้หรือมีประโยชน์
Tim Williscroft

1
และเมื่อถูกถามชุดของคำถามที่หลายทางเลือกที่ส่วนใหญ่มักจะให้คุณก็จะได้ยินคำว่า "ใช่" :-)
เจสันไวท์ฮอร์น

1
ฉันไม่ได้บอกว่ามันง่าย และอย่างน้อยถ้าคุณถามมีโอกาสที่คุณจะได้รับคำตอบที่เป็นประโยชน์
DJClayworth

5

ระยะเวลาดำเนินการ

เวลาของผู้ใช้ของฉันไม่ถูก สิ่งที่เกิดขึ้นไปรอบ ๆ


ฉันเพิ่งอัพเกรดแอปพลิเคชันที่ฉันใช้เมื่อปีที่แล้ว พวกเขาเขียนแอพใหม่อย่างสมบูรณ์และเด็กชายก็ช้า ในที่สุดฉันก็ต้องซื้อคอมพิวเตอร์เครื่องใหม่เพื่อให้ทำงานได้อย่างรวดเร็ว ฉันรับประกันคุณว่าไม่ถูก แต่เวลาของฉันมีค่ามากกว่า


เวลาที่ใช้ในการประมวลผลน่าสนใจ สนใจที่จะแบ่งปันแอปพลิเคชันประเภทใดที่คุณพัฒนา? ฉันรู้สึกทึ่ง
Jason Whitehorn

1
เวลาในการดำเนินการเป็นสิ่งสำคัญหากคุณใช้งานคอมพิวเตอร์จำนวนมาก ตัวอย่างเช่นหากเป็นตัวเลือกระหว่างการใช้จ่ายเพิ่มประสิทธิภาพ 2 เดือนหรือปรับรุ่นพีซี 10,000 เครื่องเป็นฮาร์ดแวร์ใหม่ในกรณีนี้เวลาของนักพัฒนาซอฟต์แวร์จะไม่ชนะ แต่แน่นอนมันเป็นการประนีประนอม หากคุณใช้เซิร์ฟเวอร์เพียงครึ่งโหลเวลาของนักพัฒนาก็น่าจะชนะในกรณีนั้น
Dean Harding

1
@ Jason ฉันทำให้มันง่ายตอนนี้การทำงานกับ Excel และ VBA ในการรวมกลุ่มของสเปรดชีต (ซึ่งฉันควบแน่นอย่างรวดเร็ว) ผู้ใช้ของฉันทำงานในห้องถัดไปและพวกเขาแจ้งให้ฉันทราบหากฉันมีปัญหาใด ๆ มุมมองของฉันมาจากการใช้คอมพิวเตอร์เป็นเวลาสามสิบปีและการดูแอปพลิเคชันยังคงขยายตัวบังคับให้อัปเกรดชดเชยเกินไป ฉันรู้ว่านักพัฒนาสามารถทำได้ดีกว่าพวกเขาแค่ต้องติดนิสัยการเขียนโค้ดที่มีประสิทธิภาพ

+10 สำหรับรหัสที่มีประสิทธิภาพ สิ่งนี้มักถูกมองข้ามโดยเฉพาะในการเขียนโปรแกรมแบบแยกส่วน โมดูลทุกตัววิ่งด้วยความเร็วที่สมเหตุสมผล แต่ผลรวมของทั้งหมดอาจช้าอย่างน่ากลัว
Joris Meys

4

ฉันมักจะเอียงไปทางการ จำกัด การใช้หน่วยความจำและการจัดสรร ฉันรู้ว่ามันเป็นโรงเรียนเก่า แต่:

  • รหัสที่ไม่ใช่การโยนทิ้งส่วนใหญ่ที่ฉันเขียนนั้นขนานกันอย่างหนัก ซึ่งหมายความว่าการจัดสรรหน่วยความจำมากเกินไปและกิจกรรมการรวบรวมขยะจะทำให้ซีเรียลโค้ดเป็นจำนวนมาก นอกจากนี้ยังหมายความว่าจะมีการช่วงชิงจำนวนมากสำหรับบัสหน่วยความจำที่ใช้ร่วมกัน
  • ภาษาหลักของฉันคือ D ซึ่งยังไม่มีการสนับสนุน 64- บิตที่ดี (แม้ว่านี่จะถูกแก้ไข)
  • ฉันทำงานกับชุดข้อมูลที่มีขนาดใหญ่พอสมควร

+1 สำหรับการทำงานเพื่อป้องกัน bloatware โปรแกรม hogging หน่วยความจำเป็นโปรแกรมที่ไม่ดี

โปรแกรมหน่วยความจำ hogging สามารถเรียกใช้บนระบบ 64 บิตโดยและขนาดใหญ่ นั่นคือสิ่งที่เราทำเมื่อแอปหนึ่งของเราประสบปัญหาเรื่องหน่วยความจำ (มันใช้หน่วยความจำจำนวนมากอย่างถูกกฎหมาย) สัญลักษณ์แสดงหัวข้อแรกมีความสำคัญเมื่อประสิทธิภาพเป็น
David Thornley

2

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

คุณจะบรรลุความสมดุลนั้นได้อย่างไร? ก่อนอื่นคุณต้องสร้างค่าคงที่สองสามอย่างเช่นกำหนดเวลาอะไรฮาร์ดแวร์ของแอปพลิเคชันของคุณจะทำงานและประเภทของบุคคลที่จะใช้ คุณจะไม่สามารถสร้างสมดุลที่ถูกต้องและจัดลำดับความสำคัญตามที่ต้องการ

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


2

เทคโนโลยี virtualization ใดก็ตามที่ฉันใช้

จำวันที่ระบบที่มี RAM มากกว่า 512 MB ถูกพิจารณาว่ามีเลือดออกหรือไม่ ฉันใช้วันของฉันในการเขียนรหัสสำหรับก่อนหน้า

ฉันทำงานส่วนใหญ่กับโปรแกรมระดับต่ำที่ทำงานบนโดเมนที่มีสิทธิ์ในสภาพแวดล้อม Xen เพดานของเราสำหรับโดเมนที่มีสิทธิใช้งานคือ 512 MB ทำให้เหลือ RAM ส่วนที่เหลือให้ลูกค้าของเราใช้ฟรี นอกจากนี้ยังเป็นเรื่องปกติที่เราจะ จำกัด โดเมนที่ได้รับการยกเว้นให้กับ CPU แกนเดียวเท่านั้น

ดังนั้นที่นี่ฉันเขียนโค้ดที่จะทำงานบนเซิร์ฟเวอร์ใหม่มูลค่า $ 6k และแต่ละโปรแกรมต้องทำงาน (ในอุดมคติ) ภายในเพดานที่จัดสรร 100kb หรือจัดสรรหน่วยความจำแบบไดนามิกอย่างสมบูรณ์

สรุปฉันปรับให้เหมาะสมสำหรับ:

  • หน่วยความจำรอยเท้า
  • เรียงลำดับ (ที่ส่วนใหญ่ของรหัสของฉันใช้เวลาส่วนใหญ่)

ฉันต้องขยันอย่างมากเมื่อถึงเวลาที่ต้องรอล็อครอ I / O หรือรอโดยทั่วไป เวลาของฉันในการปรับปรุงไลบรารีซ็อกเก็ตที่ไม่มีการบล็อกที่มีอยู่และมองหาวิธีการที่เป็นประโยชน์มากกว่าสำหรับการเขียนโปรแกรมล็อคฟรี

ทุกวันฉันพบว่ามันน่าขันนิดหน่อยที่ฉันเขียนโค้ดเหมือนเมื่อ 15 ปีก่อนในระบบที่ซื้อมาเมื่อเดือนที่แล้วเนื่องจากความก้าวหน้าทางเทคโนโลยี

นี่เป็นเรื่องปกติสำหรับทุกคนที่ทำงานบนแพลตฟอร์มที่ฝังตัวเช่นกันแม้ว่าจะมีหลายคนที่มีอย่างน้อย 1GB ในการกำจัด เจสันชี้ให้เห็นว่าเป็นเรื่องปกติเมื่อเขียนโปรแกรมเพื่อให้ทำงานบนอุปกรณ์มือถือ รายการไปที่ซุ้ม, ลูกค้าบาง, กรอบรูป, ฯลฯ

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


1
+1 สำหรับมุมพิมพ์เท้าหน่วยความจำ ฉันไม่เคยรหัสกับข้อ จำกัด โดยเฉพาะอย่างยิ่งที่คุณจะจัดการกับ แต่เอาส่วนแรกพูดคุยเกี่ยวกับ Xen และแทนที่ด้วย iPhone และฉันรู้ว่าที่คุณจะมาจาก :-)
เจสันไวท์ฮอร์น

2

ผลการวิจัย

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

มันเป็นเส้นแบ่ง ในแง่ของผลกระทบคุณต้องการให้งานของคุณถูกนำมาใช้และอ้างถึงโดยผู้อื่นและIceberg Effect ของ Joelเข้ามามีบทบาท: การขัดเงาและเงางามเล็กน้อยสามารถไปได้ไกล แต่ถ้าคุณไม่ได้สร้างรากฐานสำหรับโครงการอื่น ๆ ที่จะสร้างขึ้นคุณก็อาจไม่สามารถพิสูจน์เวลาที่ใช้ในการสร้างผลิตภัณฑ์ที่ส่งมอบได้


1
  1. ออกแบบ
    • คลัปต่ำโมดูลาร์
    • กระชับพื้นที่การใช้งานที่ชัดเจน
    • เอกสารที่ดี
    • refactor อย่างต่อเนื่องสำหรับ cruft
  2. บำรุงรักษา
    • สร้างและตรวจแก้จุดบกพร่องที่ทำซ้ำได้
    • การทดสอบหน่วย
    • การทดสอบการถดถอย
    • การควบคุมแหล่งที่มา

... หลังจากนั้นทุกอย่างอื่น

... ในที่สุดเพิ่มประสิทธิภาพสำหรับประสิทธิภาพ ;-)


1

คุณภาพ / ทดสอบ

ปรับคุณภาพให้เหมาะสมเพื่อให้มั่นใจว่ามีเวลาในตารางการพัฒนาสำหรับการทดสอบทั้งการทดสอบหน่วยและการทดสอบหลังจากคุณสมบัติ / เฟส


1

ขึ้นอยู่กับความต้องการของโปรแกรมของคุณ

สิ่งที่ฉันทำส่วนใหญ่ถูก จำกัด อย่างมากจากความสามารถในการประมวลผลและหน่วยความจำ แต่ไม่ได้ผ่านการเปลี่ยนแปลงที่สำคัญมากในปีเฉลี่ยถ้ามี

ฉันเคยทำงานในโครงการที่มีการเปลี่ยนแปลงรหัสบ่อยครั้งดังนั้นการบำรุงรักษาจึงมีความสำคัญมากกว่าในกรณีเหล่านั้น

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


1

ความงดงามความงดงาม

หากรหัสของคุณได้รับการออกแบบอย่างดีจะมีผลกระทบหลายอย่าง:

  1. มันจะง่ายต่อการรักษา (ลดค่าใช้จ่ายสำหรับลูกค้า)
  2. มันจะง่ายขึ้นในการเพิ่มประสิทธิภาพ (สำหรับ JIT หรือคอมไพเลอร์เต็มรูปแบบ)
  3. มันจะง่ายกว่าที่จะเปลี่ยน (เมื่อคุณคิดว่าเป็นทางออกที่ดีกว่า)


0

ตั้งแต่ฉันติดตั้งบนระบบหลายประเภททุกอย่างจากเมนเฟรมของ IBM ไปจนถึงพีซีฉันจะปรับความเข้ากันได้ให้เหมาะสมก่อนจากนั้นจึงกำหนดขนาดและความเร็ว


0

มันขึ้นอยู่กับ

หากคุณกำลังทำงานกับระบบประมวลผลวิดีโอแบบฝังตัวตามเวลาจริงคุณต้องปรับความเร็วการประมวลผลให้เหมาะสม หากคุณกำลังทำงานกับโปรแกรมประมวลผลคำคุณปรับให้เหมาะสมสำหรับเวลาในการพัฒนา

อย่างไรก็ตามในทุกกรณีรหัสของคุณจะต้องทำงานและจะต้องสามารถบำรุงรักษาได้


0

แสดงออกถึงเจตนาของฉัน

ฉันต้องการให้คนที่อ่านรหัสของฉันสามารถเห็นการดำเนินการที่ฉันพยายามเรียกใช้บนโดเมนได้อย่างง่ายดาย ในทำนองเดียวกันฉันพยายามลดขยะที่ไม่ได้หมายถึงความหมาย (วงเล็บปีกกาคำหลัก 'ฟังก์ชั่น' ใน js ฯลฯ ) เพื่อให้การสแกนง่ายขึ้น

แน่นอนคุณต้องรักษาสมดุลด้วยการบำรุงรักษา ฉันรักการเขียนฟังก์ชั่นที่ส่งคืนฟังก์ชั่นและเทคนิคขั้นสูงทุกประเภทและพวกเขาก็ทำตามเป้าหมายของฉันต่อไป แต่ถ้าประโยชน์เล็กน้อย


-6

ทั้งหมด

ระยะเวลาดำเนินการ

คอมพิวเตอร์ทุกวันนี้เร็ว แต่ไกลจากสิ่งที่เพียงพอ มีหลาย ๆ สถานการณ์ที่ประสิทธิภาพมีความสำคัญ - หากคุณทำการสตรีมเซิร์ฟเวอร์มีเดีย

การเก็บรักษา

ลูกค้าของคุณอาจมีดิสก์ขนาดใหญ่สมมติว่า 1Tb สิ่งใดบ้างที่สามารถนำขึ้นมาด้วยภาพยนตร์ HD 1,000 เรื่องหากคุณต้องการให้บริการมันไกลเกินพอใช่ไหม

เวลาในการพัฒนา

ฉันไม่แน่ใจว่านับเป็น "การเพิ่มประสิทธิภาพ" สิ่งที่ฉันทำคือฉันใช้ Java แทน C ++ และการพัฒนาเร็วขึ้น 10 เท่าฉันรู้สึกเหมือนฉันกำลังบอกสิ่งที่ฉันคิดกับคอมพิวเตอร์โดยตรงมาก ๆ ไปข้างหน้าและโขดหินทั้งหมด!

BTW ฉันเชื่อว่าการเพิ่มความเร็วในการพัฒนากระบวนการพัฒนาของคุณคุณควรเลือกจาวาอย่าพยายามขยะอย่างหลาม ... ซึ่งอ้างว่าพวกมันสามารถย่นระยะเวลา DEV ของคุณได้


คุณอาจพบว่าการอ่านนี้น่าสนใจ: paulgraham.com/avg.html - มันกล่าวถึงความแข็งแกร่งของภาษาการเขียนโปรแกรม

3
ด้วยเวลาและงบประมาณที่ จำกัด คุณจะไม่สามารถใช้เวลากับมันได้ทั้งหมด - จะต้องมีความสำคัญบางอย่าง
JBRWilkinson

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