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

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

14
วิธีที่เร็วที่สุดในการตรวจสอบว่ามีค่าอยู่ในรายการหรือไม่
วิธีที่เร็วที่สุดที่จะทราบว่ามีค่าอยู่ในรายการ (รายการที่มีค่าหลายล้านค่าอยู่ในรายการ) และดัชนีคืออะไร ฉันรู้ว่าค่าทั้งหมดในรายการไม่เหมือนกันในตัวอย่างนี้ วิธีแรกที่ฉันลองใช้คือ (3.8 วินาทีในรหัสจริงของฉัน): a = [4,2,3,1,5,6] if a.count(7) == 1: b=a.index(7) "Do something with variable b" วิธีที่สองที่ฉันลองคือ (2x เร็วกว่า: 1.9 วินาทีสำหรับรหัสจริงของฉัน): a = [4,2,3,1,5,6] try: b=a.index(7) except ValueError: "Do nothing" else: "Do something with variable b" วิธีการที่เสนอจากผู้ใช้ Stack Overflow (2.74 วินาทีสำหรับรหัสจริงของฉัน): a = [4,2,3,1,5,6] if 7 …
816 python  performance  list 

27
รับความแตกต่างระหว่างสองรายการ
ฉันมีสองรายการใน Python ดังนี้: temp1 = ['One', 'Two', 'Three', 'Four'] temp2 = ['One', 'Two'] ฉันต้องการสร้างรายการที่สามด้วยรายการจากรายการแรกที่ไม่มีอยู่ในรายการที่สอง จากตัวอย่างฉันต้องได้รับ: temp3 = ['Three', 'Four'] มีวิธีใดที่รวดเร็วโดยไม่มีวงจรและการตรวจสอบหรือไม่?

2
เหตุใดโปรแกรมของฉันจึงช้าเมื่อวนลูปมากกว่า 8192 องค์ประกอบ
นี่คือสารสกัดจากโปรแกรมที่เป็นปัญหา เมทริกซ์img[][]มีขนาด SIZE × SIZE และเริ่มต้นได้ที่: img[j][i] = 2 * j + i จากนั้นคุณสร้างเมทริกซ์res[][]และแต่ละฟิลด์ในที่นี้จะถูกทำให้เป็นค่าเฉลี่ยของ 9 ฟิลด์รอบ ๆ มันในเมทริกซ์ img เส้นขอบจะเหลือ 0 เพื่อความเรียบง่าย for(i=1;i<SIZE-1;i++) for(j=1;j<SIZE-1;j++) { res[j][i]=0; for(k=-1;k<2;k++) for(l=-1;l<2;l++) res[j][i] += img[j+l][i+k]; res[j][i] /= 9; } นั่นคือทั้งหมดที่มีให้กับโปรแกรม เพื่อความสมบูรณ์ 'นี่คือสิ่งที่มาก่อน ไม่มีรหัสมา อย่างที่คุณเห็นมันเป็นเพียงการเริ่มต้น #define SIZE 8192 float img[SIZE][SIZE]; // input image float res[SIZE][SIZE]; …

12
วิธีสร้างอินสแตนซ์วัตถุใหม่จากประเภท
หนึ่งอาจจะไม่เคยรู้Typeของวัตถุที่รวบรวมเวลา Typeแต่อาจจำเป็นต้องสร้างอินสแตนซ์ที่ คุณจะรับอินสแตนซ์ของวัตถุใหม่ได้Typeอย่างไร

13
Count (*) vs Count (1) - เซิร์ฟเวอร์ SQL
เพียงแค่สงสัยว่าถ้าใด ๆ ของคุณที่คนใช้Count(1)มากกว่าCount(*)และหากมีความแตกต่างที่เห็นได้ชัดในการปฏิบัติงานหรือถ้านี้เป็นเพียงนิสัยเดิมที่ได้รับการยกมาจากวันที่ผ่านมาหายไป? SQL Server 2005ฐานข้อมูลเฉพาะคือ

9
รหัส“ เป็นมิตรกับแคช” คืออะไร?
ความแตกต่างระหว่าง " รหัสที่ไม่เป็นมิตรแคช " และ " รหัสที่เป็นมิตรกับแคช " คืออะไร? ฉันจะแน่ใจได้อย่างไรว่าฉันเขียนโค้ดที่มีประสิทธิภาพแคช

5
เหตุใด [] จึงเร็วกว่ารายการ ()
ฉันเพิ่งเทียบความเร็วการประมวลผลของ[]และlist()และรู้สึกประหลาดใจที่พบว่า[]วิ่งเกินสามครั้งเร็วlist()กว่า ฉันทำการทดสอบเดียวกันด้วย{}และdict()ผลลัพธ์ก็เหมือนกันจริง: []และ{}ทั้งคู่ใช้เวลาประมาณ 0.128 วินาที / ล้านรอบในขณะที่list()และdict()ใช้เวลาประมาณ 0.428 วินาที / ล้านรอบ ทำไมนี้ ทำ[]และ{}(และอาจจะ()และ''ด้วย) ทันทีส่งกลับสำเนาของบางตัวอักษรหุ้นที่ว่างเปล่าในขณะที่ลูกน้องอย่างชัดเจนชื่อของพวกเขา ( list(), dict(), tuple(), str()) อย่างเต็มที่ไปเกี่ยวกับการสร้างวัตถุหรือไม่ว่าพวกเขาเป็นจริงมีองค์ประกอบ? ฉันไม่รู้ว่าทั้งสองวิธีต่างกันอย่างไร แต่ฉันชอบที่จะรู้ ฉันไม่พบคำตอบในเอกสารหรือบน SO และการค้นหาวงเล็บว่างเปล่ากลายเป็นปัญหามากกว่าที่ฉันคาดไว้ ฉันได้ผลลัพธ์ตามกำหนดเวลาโดยการโทรtimeit.timeit("[]")และtimeit.timeit("list()")และtimeit.timeit("{}")และtimeit.timeit("dict()")เพื่อเปรียบเทียบรายการและพจนานุกรมตามลำดับ ฉันใช้ Python 2.7.9 เมื่อเร็ว ๆ นี้ฉันค้นพบ " ทำไมถ้า True ช้ากว่าถ้า 1? " ที่เปรียบเทียบประสิทธิภาพของif Trueการif 1และดูเหมือนว่าจะได้สัมผัสกับสถานการณ์ตามตัวอักษรและทั่วโลกที่คล้ายกัน บางทีมันก็คุ้มค่าที่จะพิจารณาเช่นกัน

12
ทำไมฉันไม่ควรใช้ PyPy กับ CPython ถ้า PyPy เร็วกว่า 6.3 เท่า?
ฉันได้ยินมามากมายเกี่ยวกับโครงการPyPy พวกเขาอ้างว่ามันคือ 6.3 ครั้งเร็วกว่าCPythonล่ามบนเว็บไซต์ของพวกเขา เมื่อใดก็ตามที่เราพูดถึงภาษาไดนามิกเช่น Python ความเร็วเป็นหนึ่งในปัญหาอันดับต้น ๆ เพื่อแก้ปัญหานี้พวกเขาบอกว่า PyPy เร็วขึ้น 6.3 เท่า ปัญหาที่สองคือการขนานกันInterpreter Lock (GIL) ที่น่าอับอาย สำหรับเรื่องนี้ PyPy บอกว่ามันสามารถให้ GIL น้อยหลาม หาก PyPy สามารถแก้ปัญหาความท้าทายที่ยิ่งใหญ่เหล่านี้อะไรคือจุดอ่อนที่ป้องกันการยอมรับในวงกว้าง? นั่นคือจะบอกว่าสิ่งที่ป้องกันไม่ให้คนอย่างผมซึ่งเป็นผู้พัฒนาหลามทั่วไปจากการเปลี่ยนไป PyPy ในขณะนี้ ?

18
เปรียบเทียบความเร็วกับ Project Euler: C กับ Python เทียบกับ Erlang และ Haskell
ฉันได้นำปัญหา # 12จากProject Euler มาเป็นแบบฝึกหัดการเขียนโปรแกรมและเพื่อเปรียบเทียบการใช้งานของฉันใน C, Python, Erlang และ Haskell เพื่อให้ได้เวลาดำเนินการที่สูงขึ้นฉันค้นหาหมายเลขสามเหลี่ยมแรกที่มีตัวหารมากกว่า 1,000 ตัวแทนที่จะเป็น 500 ตามที่ระบุในปัญหาดั้งเดิม ผลที่ได้คือ: ค: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin 842161320 real 0m11.074s user 0m11.070s sys 0m0.000s งูหลาม: lorenzo@enzo:~/erlang$ time ./euler12.py 842161320 real 1m16.632s user 1m16.370s sys 0m0.250s Python กับ PyPy: lorenzo@enzo:~/Downloads/pypy-c-jit-43780-b590cf6de419-linux64/bin$ time ./pypy …

8
แนะนำหน่วยความจำ Python ใด? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการทราบการใช้หน่วยความจำของแอปพลิเคชั่น Python ของฉันและต้องการทราบว่าการบล็อกโค้ด / ส่วนหรือวัตถุใดที่ใช้หน่วยความจำมากที่สุด การค้นหาของ Google แสดงโฆษณาหนึ่งคือPython Memory Validator (Windows เท่านั้น) และคนที่มาเปิดPySizerและHeapy ฉันไม่ได้ลองใครเลยฉันอยากรู้ว่าอันไหนดีที่สุดในการพิจารณา: ให้รายละเอียดมากที่สุด ฉันต้องทำอย่างน้อยหรือไม่มีการเปลี่ยนแปลงรหัสของฉัน

7
เมื่อใดจึงควรใช้ CouchDB บน ​​MongoDB และในทางกลับกัน
ฉันติดอยู่ระหว่างฐานข้อมูล NoSQL ทั้งสองนี้ ในโครงการของฉันฉันจะสร้างฐานข้อมูลภายในฐานข้อมูล ตัวอย่างเช่นฉันต้องการโซลูชันเพื่อสร้างตารางแบบไดนามิก ดังนั้นผู้ใช้สามารถสร้างตารางด้วยคอลัมน์และแถว ฉันคิดว่า MongoDB หรือ CouchDB จะดีสำหรับเรื่องนี้ แต่ฉันไม่แน่ใจว่าอันไหน ฉันก็จะต้องการเพจที่มีประสิทธิภาพเช่นกัน

19
วิธีที่ต้องการในการเก็บอาร์เรย์ PHP (json_encode เทียบกับอันดับ)
ฉันต้องการจัดเก็บอาเรย์เชื่อมโยงหลายมิติข้อมูลในไฟล์แฟล็ตเพื่อการแคช ฉันอาจต้องแปลงเป็น JSON เป็นครั้งคราวเพื่อใช้ในเว็บแอปของฉัน แต่ส่วนใหญ่ฉันจะใช้อาร์เรย์โดยตรงใน PHP จะมีประสิทธิภาพมากกว่าหรือไม่ในการจัดเก็บอาร์เรย์เป็น JSON หรือเป็นอาร์เรย์ PHP ต่อเนื่องในไฟล์ข้อความนี้ ฉันได้ดูไปรอบ ๆ และดูเหมือนว่าใน PHP เวอร์ชันล่าสุด (5.3) json_decodeนั้นเร็วกว่าจริงunserializeๆ ขณะนี้ฉันเอนตัวไปที่การจัดเก็บอาร์เรย์เป็น JSON เพราะฉันรู้สึกว่ามันง่ายต่อการอ่านโดยมนุษย์ถ้าจำเป็นมันสามารถใช้ได้ทั้ง PHP และ JavaScript ด้วยความพยายามน้อยมากและจากสิ่งที่ฉันอ่านมันอาจจะเป็น เร็วกว่าในการถอดรหัส (ไม่แน่ใจเกี่ยวกับการเข้ารหัส) ไม่มีใครรู้ถึงข้อผิดพลาดใด ๆ ? ทุกคนมีเกณฑ์มาตรฐานที่ดีในการแสดงผลประโยชน์ด้านประสิทธิภาพของวิธีใด

30
กลยุทธ์การเพิ่มประสิทธิภาพการทำงานของวิธีสุดท้าย [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา มีคำถามเกี่ยวกับประสิทธิภาพมากมายในไซต์นี้แล้ว แต่มันก็เกิดขึ้นกับฉันว่าเกือบทั้งหมดเป็นปัญหาเฉพาะและแคบพอสมควร และเกือบทั้งหมดทำซ้ำคำแนะนำเพื่อหลีกเลี่ยงการเพิ่มประสิทธิภาพก่อนวัยอันควร สมมติว่า: รหัสทำงานอย่างถูกต้องแล้ว อัลกอริทึมที่เลือกเหมาะสมที่สุดแล้วสำหรับสถานการณ์ของปัญหา มีการวัดรหัสและรูทีนที่กระทำผิดได้ถูกแยกออก ความพยายามในการปรับให้เหมาะสมทั้งหมดจะถูกวัดเพื่อให้มั่นใจว่าพวกเขาจะไม่ทำให้เรื่องแย่ลง สิ่งที่ฉันกำลังมองหาที่นี่คือกลยุทธ์และกลอุบายที่จะบีบให้มากถึงไม่กี่เปอร์เซ็นต์ในอัลกอริทึมวิกฤตเมื่อไม่มีอะไรเหลือให้ทำอีก ในอุดมคติแล้วให้พยายามตอบคำถามผู้ไม่เชื่อเรื่องภาษาและระบุข้อบกพร่องของกลยุทธ์ที่แนะนำหากมี ฉันจะเพิ่มการตอบกลับด้วยคำแนะนำเริ่มต้นของฉันเองและหวังว่าจะได้รับสิ่งที่ชุมชน Stack Overflow สามารถนึกถึงได้

23
อันไหนเร็วกว่า: ในขณะที่ (1) หรือขณะที่ (2)
นี่เป็นคำถามสัมภาษณ์ที่ผู้จัดการอาวุโสถาม ไหนเร็วกว่ากัน while(1) { // Some code } หรือ while(2) { //Some code } ผมบอกว่าทั้งสองมีความเร็วในการทำงานเดียวกันเป็นภายในแสดงออกwhileในที่สุดก็ควรประเมินหรือtrue falseในกรณีนี้ทั้งสองประเมินtrueและไม่มีคำแนะนำแบบมีเงื่อนไขพิเศษภายในwhileเงื่อนไข ดังนั้นทั้งสองจะมีความเร็วในการดำเนินการเท่ากันและฉันชอบในขณะที่ (1) แต่ผู้สัมภาษณ์กล่าวอย่างมั่นใจว่า: "ตรวจสอบพื้นฐานของคุณwhile(1)เร็วกว่าwhile(2)" (เขาไม่ได้ทดสอบความมั่นใจของฉัน) มันเป็นเรื่องจริงเหรอ? ดูเพิ่มเติม: "สำหรับ (;;)" เร็วกว่า "ขณะ (TRUE)" หรือไม่ ถ้าไม่ทำไมผู้คนถึงใช้มัน?

8
วิธีใดที่ทำงานได้ดีกว่า: .Any () vs .Count ()> 0
ในSystem.Linqnamespace ตอนนี้เราสามารถขยายของเราIEnumerable เป็นที่จะมีใด ๆ ()และนับ () วิธีการขยาย ฉันได้รับแจ้งเมื่อไม่นานมานี้ว่าหากฉันต้องการตรวจสอบว่าคอลเล็กชันมี 1 หรือมากกว่าไอเท็มอยู่ข้างในฉันควรใช้.Any()วิธีการขยายแทนวิธีการ.Count() > 0ต่อเนื่องจากวิธีการ.Count()ขยายต้องวนซ้ำทุกรายการ ประการที่สองคอลเลกชันบางรายที่มีคุณสมบัติ (ไม่ใช่วิธีขยาย) ที่เป็นหรือCount Lengthมันจะเป็นการดีกว่าถ้าจะใช้สิ่งเหล่านั้นแทน.Any()หรือ.Count()? อือ?

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