It will be even faster if you do a binary search on the sorted array f การแปล - It will be even faster if you do a binary search on the sorted array f ไทย วิธีการพูด

It will be even faster if you do a

It will be even faster if you do a binary search on the sorted array for the first positive value, and sum all values from that index until the end, without the check in the inner loop. – Mark Jeronimus Feb 26 '14 at 15:46

On a lighter note, sorting the input data would make it faster by a factor of at least log (base2) N , where N is the input size, because you could have a boolean flag to check if the array is already sorted :) – R R Madhav Apr 12 '14 at 14:58

Jun 28 2012 – nicael Jun 6 '14 at 19:22

The amazing thing here is that the equivalent code in CPython 2.7.6, CPython 3.4.1, and Ruby 2.0.0 seems to also benefit by 10-30% from sorting the input. Not quite the 80% speedup of C++ and Java, or the 60% speedup of PyPy and v8, but a lot more than the negligible benefit I'd expect. I guess that comes down to the CPU mis-predicting a branch inside the ceval loop (which has a heavier cost, but since the whole loop is much heavier it's proportionately less)? – abarnert Sep 28 '14 at 4:30

Try switching the order of the cases. On my machine running the same benchmark above unsorted executes in 16.8X seconds, then sorted in 9.8X. When I switched the order to run sorted first, then unsorted it executes the sorted bench in 6.6X, then unsorted in a whopping 19.3X. Why is this?? – user3029413 Oct 11 '14 at 12:11

I think it is indeed misleading. Because one thing is to "optimize" the compiler/processor and an other is to optimize the code. In the "demo" code the timing is recorded "AFTER" sorting. So it looks like a compiler/optimizer/processor thing. In other words: It is simply the wrong question! As it is not about compiler optimization, but an actual code is presented. People might think to use this as optimization feature, while, indeed it is just a very bad code. Because you can seek the data well before; in advance. This situation should not happen. – mario Feb 10 at 18:50

I am sorry, because indeed each answer, is totally pertinent and fully explanatory. I did learn something too. But I think that the approach is wrong and we should discourage it. That code should not exists unless you test the compiler/optimizer/processor. This makes it a totally different question. The accepted answer should warn: do not do this!
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
มันจะเร็ว ถ้าคุณทำการค้นหาแบบไบนารีในแถวเรียงลำดับแรกบวกค่า รวมค่าทั้งหมดจากดัชนีที่จนสุด ไม่มีการตรวจสอบในลูปภายใน – ทำเครื่องหมาย Jeronimus 26 feb ' 14 15:46 ในหมายเหตุเบา การเรียงลำดับข้อมูลที่ป้อนเข้าจะทำให้มันเร็วขึ้น โดยตัวของระบบน้อย (base2) N โดยที่ N คือ ขนาดป้อน เนื่องจากคุณสามารถมีค่าสถานะบูลีนเพื่อตรวจสอบถ้าอาร์เรย์แล้วเรียง:) – R R มัธวะ 12 apr ' 14 14:58 28 มิ.ย. 2012 – nicael 6 Jun ' 14 เวลา 19:22 สิ่งตื่นตาตื่นใจที่นี่คือ ว่า รหัสเทียบเท่า CPython 2.7.6, CPython 3.4.1 และทับทิม 2.0.0 น่าจะ ยัง ประโยชน์ 10-30% จากการเรียงลำดับการป้อนข้อมูล ไม่ speedup 80% ของ c ++และ Java หรือ speedup 60% PyPy และ v8 แต่มากมากกว่าผมคาดว่าคุณประโยชน์ของระยะการ ผมคิดว่า ที่ลงมาให้ CPU ผิดคาดการณ์สาขาภายในลูป ceval (ซึ่งมีต้นทุนหนัก แต่เนื่องจากลูปทั้งหนักกว่ามาก ก็ตามสัดส่วนน้อยลง) หรือไม่ -abarnert 28 Sep ' 14 ที่ 4:30 ลองสลับลำดับของกรณีและปัญหา เครื่องของฉัน ใช้เกณฑ์มาตรฐานเดียวกันข้างต้น unsorted ดำเนินวินาที X 16.8 แล้ว เรียง 9.8 X เมื่อฉันสลับลำดับไล่เรียงลำดับ แรก แล้ว unsorted มันดำเนินม้านั่งเรียงลำดับใน 6.6 X นั้น unsorted ใน 19.3 ประวัติการ X ทำไมเป็นเช่นนั้น?? – user3029413 11 Oct ' 14 ที่ 12:11 ฉันคิดว่า มันเป็นความเข้าใจผิดแน่นอน เพราะสิ่งหนึ่งคือการ "เพิ่มประสิทธิภาพ" คอมไพเลอร์/ตัวประมวลผล และการอื่น ๆ คือการเพิ่มประสิทธิภาพรหัส รหัส "สาธิต" บันทึกเวลา "หลังจาก" การเรียงลำดับ ดังนั้น มันดูเหมือนสิ่งคอมไพเลอร์/เพิ่มประสิทธิภาพ/ประมวลผล ในคำอื่น ๆ: มันเป็นเพียงคำถามไม่ถูกต้อง แสดงเป็นมันไม่เกี่ยวกับคอมไพเลอร์ปรับให้เหมาะสม แต่รหัสแท้จริง คนอาจคิดว่า การใช้นี้เป็นการเพิ่มประสิทธิภาพคุณลักษณะ ขณะที่ แน่นอนมันเป็นเพียงรหัสที่ดีได้ เนื่องจากคุณสามารถค้นหาข้อมูลกันก่อน ล่วงหน้า กรณีนี้ไม่ควรเกิดขึ้น – มาริโอ 10 ก.พ.ที่ 18:50 ขอโทษ เพราะจริง ๆ แต่ละคำตอบ เกี่ยวทั้งหมด และอธิบายอย่างเต็ม ผมไม่ได้เรียนบางสิ่งบางอย่างมากเกินไป แต่คิดว่า วิธีไม่ถูกต้อง และเราควรกีดกัน ให้รหัสควรไม่มียกเว้นว่าคุณทดสอบคอมไพเลอร์/เพิ่มประสิทธิภาพ/ประมวล ซึ่งทำให้มันคำถามแตกต่างกันโดยสิ้นเชิง คำตอบที่ยอมรับควรเตือน: ไม่
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
มันจะทำงานได้เร็วขึ้นถ้าคุณทำค้นหาแบบไบนารีในอาร์เรย์ที่เรียงลำดับสำหรับค่าบวกครั้งแรกและรวมค่าทั้งหมดจากดัชนีที่จนกว่าจะเสร็จสิ้นโดยไม่มีการตรวจสอบในวงภายใน - มาร์ค Jeronimus 26 กุมภาพันธ์ '14 ที่ 15:46 เมื่อทราบเบาเรียงลำดับข้อมูลเข้าจะทำให้มันเร็วขึ้นโดยปัจจัยอย่างน้อยเข้าสู่ระบบ (base2) n โดยที่ N คือขนาดการป้อนข้อมูลเพราะคุณอาจมีธงบูลี เพื่อตรวจสอบว่าอาร์เรย์จะเรียงแล้ว :) - RR Madhav 12 เมษายน '14 ที่ 14:58 28 มิถุนายน 2012 - nicael 6 มิถุนายน '14 ที่ 19:22 สิ่งที่น่าทึ่งว่านี่คือรหัสเทียบเท่าใน CPython 2.7.6, CPython 3.4.1 และ 2.0.0 ทับทิมดูเหมือนว่าจะยังได้รับประโยชน์จาก 10-30% จากการเรียงลำดับการป้อนข้อมูล ไม่มากเพิ่มความเร็ว 80% ของภาษา C ++ และ Java หรือเพิ่มความเร็ว 60% ของ PyPy และ v8 แต่มากขึ้นกว่าผลประโยชน์เล็กน้อยฉันคาดหวัง ฉันเดาว่าจะลงมาให้ผิดพลาดทำนาย CPU สาขาภายในห่วง Ceval (ซึ่งมีค่าใช้จ่ายที่หนัก แต่เนื่องจากห่วงทั้งเป็นมากหนักมันเป็นสัดส่วนน้อยกว่า)? - abarnert 28 กันยายน '14 ที่ 4:30 ลองเปลี่ยนคำสั่งของกรณี ในเครื่องของฉันทำงานมาตรฐานเดียวกันข้างต้นรันไม่ได้เรียงลำดับในไม่กี่วินาที 16.8 เรียงลำดับแล้วใน 9.8 เท่า เมื่อฉันเปลี่ยนเพื่อใช้เรียงลำดับแรกที่ไม่ได้เรียงลำดับจากนั้นจะดำเนินการในม้านั่งเรียง 6.6 เท่า, ไม่ได้เรียงลำดับแล้วใน 19.3X มหันต์ นี่คือเหตุผลที่ ?? - user3029413 11 ตุลาคม '14 เมื่อ 12:11 ผมคิดว่ามันเป็นจริงที่ทำให้เข้าใจผิด เพราะสิ่งหนึ่งคือการ "เพิ่มประสิทธิภาพ" หน่วยประมวลผลคอมไพเลอร์ / และอื่น ๆ คือการเพิ่มประสิทธิภาพของรหัส ใน "สาธิต" รหัสระยะเวลาที่จะถูกบันทึกไว้ "หลัง" การเรียงลำดับ ดังนั้นดูเหมือนว่าคอมไพเลอร์ / เพิ่มประสิทธิภาพ / สิ่งที่ประมวลผล ในคำอื่น ๆ : มันเป็นเพียงคำถามผิด! ขณะที่มันไม่ได้เกี่ยวกับการเพิ่มประสิทธิภาพของคอมไพเลอร์ แต่รหัสที่เกิดขึ้นจริงจะถูกนำเสนอ คนอาจจะคิดว่าจะใช้คุณสมบัตินี้ในขณะที่การเพิ่มประสิทธิภาพในขณะที่จริงมันเป็นเพียงรหัสที่เลวร้ายมาก เพราะคุณสามารถขอข้อมูลที่ดีก่อนที่จะ; ล่วงหน้า สถานการณ์เช่นนี้ไม่ควรเกิดขึ้น - มาริโอ 10 กุมภาพันธ์ที่ 18:50 ผมเสียใจเพราะแน่นอนแต่ละคำตอบคือทั้งหมดที่เกี่ยวข้องและอธิบายได้อย่างเต็มที่ ผมไม่ได้เรียนรู้บางสิ่งบางอย่างมากเกินไป แต่ผมคิดว่าวิธีการที่ไม่ถูกต้องและเราควรกีดกันมัน รหัสที่ไม่ควรมีอยู่จนกว่าคุณจะทดสอบคอมไพเลอร์ / เพิ่มประสิทธิภาพ / การประมวลผล ซึ่งทำให้มันเป็นคำถามที่แตกต่างกันโดยสิ้นเชิง คำตอบที่ได้รับการยอมรับควรเตือน: ไม่ทำเช่นนี้!











การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
มันก็จะเร็วขึ้นถ้าคุณทำค้นหาแบบไบนารีในอาร์เรย์แบบจัดเรียงค่าเป็นบวกครั้งแรก และผลรวมของค่าทั้งหมดจากที่ดัชนีจนถึงที่สุด โดยไม่มีการตรวจสอบในห่วงด้านใน - มาร์ค jeronimus กุมภาพันธ์ 26 ' 14 ได้ที่

ในหมายเหตุไฟแช็ก จัดเรียงข้อมูลในข้อมูลจะทำให้มันเร็วขึ้น โดยปัจจัยน้อยเข้าสู่ระบบ ( เบส 2 ) n โดยที่ n คือข้อมูลขนาดเพราะคุณอาจมีตรรกะธงเพื่อตรวจสอบว่าเรย์กำลังเรียง : ) – R R Madhav 12 ' 14 เม.ย. ที่ตะลุย

Jun 28 2012 – nicael จุน 6 ' 14 ที่ 19 : 22

ที่นี่คือสิ่งน่าพิศวงที่เทียบเท่ารหัสใน 2.7.6 ซีไพทอน , 3.4.1 ซีไพทอนและทับทิม 2.0.0 ดูยัง ประโยชน์โดย 10-30 % จากข้อมูลเรียงลำดับ ไม่เชิงว่า 80% SpeedUp ของ C และ Java หรือ 60% การเร่งความเร็วของ pypy V8 และ ,แต่มากขึ้นกว่าเล็กน้อย ประโยชน์ที่ผมคาดหวัง ฉันเดาว่านั่นมาจาก CPU เพื่อทำนายสาขาภายในวง ceval ( ซึ่งมีหนักต้นทุน แต่ห่วงทั้งหนักมันเป็นสัดส่วนที่น้อยกว่า ) - abarnert ก.ย. 28 ' 14 น.

ลองเปลี่ยนลำดับของกรณี ในเครื่องของฉันวิ่งเหมือนกันมาตรฐานข้างต้นเรียงรันใน 16.8x วินาทีแล้วเรียงใน 9.8x เมื่อผมเปลี่ยนคำสั่งให้รันเรียงก่อน แล้วเรียงมันรันเรียงม้านั่งใน 6.6x แล้วเรียงใน 19.3x อย่างยิ่ง ทำไมเป็นแบบนี้ ? ) user3029413 ต.ค. ' 14 ที่ 12 : 11

ฉันคิดว่ามันเป็นจริงทำให้เข้าใจผิด เพราะสิ่งหนึ่งที่ " เพิ่มประสิทธิภาพ " คอมไพเลอร์ / ประมวลผลและการอื่น ๆคือการเพิ่มประสิทธิภาพรหัส ใน " สาธิต " รหัสเวลาบันทึก " หลัง " การเรียงลำดับดูเหมือนว่า เรียบเรียง / การเพิ่มประสิทธิภาพ / ประมวลผลอย่างเดียว ในคำอื่น ๆ : มันเป็นเพียงคำถามผิด มันไม่ได้เกี่ยวกับเพิ่มประสิทธิภาพของคอมไพเลอร์ แต่รหัสจริงคือแสดง คนอาจคิดว่าใช้เป็นคุณลักษณะที่เหมาะสม , ในขณะที่ , แน่นอนมันเป็นเพียงไม่ดีมากรหัส เพราะคุณสามารถหาข้อมูลให้ดีก่อน ล่วงหน้า สถานการณ์ที่ไม่ควรเกิดขึ้น - มาริโอ 18:50

ที่ 10 กุมภาพันธ์ฉันขอโทษ เพราะจริงๆแต่ละคำตอบทั้งหมดที่เกี่ยวข้องและมีการ . ผมได้เรียนรู้บางสิ่งบางอย่างด้วย แต่ ผม คิด ว่า วิธีการมันผิด เราก็ท้อแล้ว รหัสที่ไม่ควรมีอยู่ถ้าคุณทดสอบคอมไพเลอร์ / การเพิ่มประสิทธิภาพ / ประมวลผล มันเป็นคำถามที่แตกต่างกันโดยสิ้นเชิง การตอบคำถามควรเตือน : ไม่ทำ !
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2026 I Love Translation. All reserved.

E-mail: