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

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

10
มีกี่แถวในฐานข้อมูลที่มากเกินไป?
ฉันมีตาราง MySQL InnoDB ที่มีข้อมูล 1,000,000 รายการ นี่มันมากเกินไปหรือเปล่า? หรือฐานข้อมูลสามารถจัดการสิ่งนี้และอื่น ๆ ได้? ฉันถามเพราะฉันสังเกตเห็นว่าบางคำค้นหา (เช่นการรับแถวสุดท้ายจากตาราง) นั้นช้ากว่า (วินาที) ในตารางโดยมี 1 ล้านแถวมากกว่าในหนึ่งที่มี 100

5
ความแตกต่างอย่างมากในความเร็วของวิธีการคงที่และไม่คงที่เท่ากัน
ในรหัสนี้เมื่อฉันสร้าง Object ในmainเมธอดแล้วเรียกว่า object method: ff.twentyDivCount(i)(ทำงานใน 16010 ms) มันทำงานได้เร็วกว่าการเรียกโดยใช้คำอธิบายประกอบนี้: twentyDivCount(i)(ทำงานใน 59516 ms) แน่นอนเมื่อฉันเรียกใช้โดยไม่สร้างวัตถุฉันทำให้เมธอดคงที่ดังนั้นจึงสามารถเรียกใช้ใน main ได้ public class ProblemFive { // Counts the number of numbers that the entry is evenly divisible by, as max is 20 int twentyDivCount(int a) { // Change to static int.... when using it directly int …

12
Knockout.js ช้าอย่างไม่น่าเชื่อภายใต้ชุดข้อมูลกึ่งใหญ่
ฉันเพิ่งเริ่มใช้ Knockout.js (อยากลองใช้เสมอ แต่ตอนนี้ฉันมีข้อแก้ตัว!) - อย่างไรก็ตามฉันพบปัญหาประสิทธิภาพการทำงานที่แย่มากเมื่อผูกตารางกับชุดที่ค่อนข้างเล็ก ข้อมูล (ประมาณ 400 แถวหรือมากกว่านั้น) ในรุ่นของฉันฉันมีรหัสต่อไปนี้: this.projects = ko.observableArray( [] ); //Bind to empty array at startup this.loadData = function (data) //Called when AJAX method returns { for(var i = 0; i < data.length; i++) { this.projects.push(new ResultRow(data[i])); //<-- Bottleneck! } }; ปัญหาคือการforวนรอบด้านบนใช้เวลาประมาณ 30 วินาทีหรือประมาณนั้นโดยมีประมาณ …

30
ทำไมคุณถึงตั้งโปรแกรมในการประกอบ? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการ1 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันมีคำถามสำหรับแฮกเกอร์ระดับต่ำที่ไม่ยอมใครง่ายๆทั้งหมดที่นั่น ฉันเจอประโยคนี้ในบล็อก ฉันไม่คิดว่าแหล่งที่มามีความสำคัญ (เป็นเรื่องที่ฮากถ้าคุณสนใจจริงๆ) เพราะมันดูเหมือนจะเป็นคำพูดทั่วไป ตัวอย่างเช่นเกม 3 มิติสมัยใหม่จำนวนมากมีเอ็นจิ้นหลักประสิทธิภาพสูงที่เขียนด้วย C ++ และ Assembly เท่าที่แอสเซมบลีจะดำเนินไป - คือโค้ดที่เขียนขึ้นในแอสเซมบลีเนื่องจากคุณไม่ต้องการให้คอมไพเลอร์ปล่อยคำสั่งพิเศษหรือใช้ไบต์มากเกินไปหรือคุณใช้อัลกอริทึมที่ดีกว่าซึ่งคุณไม่สามารถแสดงใน C (หรือไม่สามารถแสดงออกได้โดยไม่ต้อง คอมไพเลอร์รวบรวมพวกเขาขึ้น)? ฉันเข้าใจดีว่าการเข้าใจสิ่งที่มีระดับต่ำเป็นสิ่งสำคัญ ฉันแค่อยากเข้าใจว่าทำไมต้องใช้โปรแกรมในแอสเซมบลีหลังจากที่คุณเข้าใจแล้ว

8
กรณีสวิตช์ Java: มีหรือไม่มีวงเล็บปีกกา?
พิจารณาสองตัวอย่างต่อไปนี้โดยใช้วงเล็บปีกกา: switch (var) { case FOO: { x = x + 1; break; } case BAR: { y = y + 1; break; } } โดยไม่ต้องจัดฟัน: switch (var) { case FOO: x = x + 1; break; case BAR: y = y + 1; break; } ฉันรู้ว่าในตัวอย่างข้อมูลที่มีวงเล็บปีกกาจะมีการสร้างขอบเขตใหม่โดยการใส่วงเล็บปีกกาแต่ละกรณี อย่างไรก็ตามหากแต่ละกรณีไม่จำเป็นต้องใช้ขอบเขตใหม่ (เช่นไม่มีการใช้ชื่อตัวแปร) จะมีการลงโทษด้านประสิทธิภาพในการใช้วงเล็บปีกกากับเคสหรือไม่?

3
ความแตกต่างอย่างมาก (x9) ในเวลาดำเนินการระหว่างโค้ดที่เหมือนกันเกือบทั้งหมดใน C และ C ++
ฉันพยายามแก้แบบฝึกหัดนี้จาก www.spoj.com: FCTRL - Factorial คุณไม่จำเป็นต้องอ่านจริงๆแค่ทำถ้าคุณอยากรู้ :) ก่อนอื่นฉันติดตั้งในC ++ (นี่คือวิธีแก้ปัญหาของฉัน): #include <iostream> using namespace std; int main() { unsigned int num_of_inputs; unsigned int fact_num; unsigned int num_of_trailing_zeros; std::ios_base::sync_with_stdio(false); // turn off synchronization with the C library’s stdio buffers (from https://stackoverflow.com/a/22225421/5218277) cin >> num_of_inputs; while (num_of_inputs--) { cin >> fact_num; num_of_trailing_zeros …
85 c++  c  performance  gcc  iostream 

11
x + = เร็วกว่า x = x + a หรือไม่?
ฉันกำลังอ่าน "The C ++ Programming Language" ของ Stroustrup ซึ่งเขาบอกว่าจากสองวิธีในการเพิ่มบางสิ่งลงในตัวแปร x = x + a; และ x += a; เขาชอบ+=เพราะมันน่าจะดีกว่า ฉันคิดว่าเขาหมายความว่ามันทำงานได้เร็วขึ้นด้วย แต่มันจริงเหรอ? ถ้ามันขึ้นอยู่กับคอมไพเลอร์และสิ่งอื่น ๆ ฉันจะตรวจสอบได้อย่างไร?

8
เหตุใดโอเปอเรเตอร์จึงช้ากว่าการเรียกใช้เมธอดมาก (โครงสร้างจะช้าลงเฉพาะใน JIT ที่เก่ากว่า)
Intro: ฉันเขียนโค้ดประสิทธิภาพสูงใน C # ใช่ฉันรู้ว่า C ++ จะให้การเพิ่มประสิทธิภาพที่ดีขึ้น แต่ฉันก็ยังเลือกที่จะใช้ C # ฉันไม่ต้องการที่จะอภิปรายทางเลือกนั้น แต่ฉันอยากได้ยินจากคนที่พยายามเขียนโค้ดประสิทธิภาพสูงบน. NET Framework คำถาม: เหตุใดตัวดำเนินการในรหัสด้านล่างจึงช้ากว่าการเรียกเมธอดเทียบเท่า ?? เหตุใดวิธีการส่งผ่านสองคู่ในโค้ดด้านล่างเร็วกว่าวิธีการที่เทียบเท่ากันโดยผ่านโครงสร้างที่มีสองคู่อยู่ภายใน (A: JIT รุ่นเก่าปรับโครงสร้างให้เหมาะสมไม่ดี) มีวิธีรับ. NET JIT Compiler เพื่อจัดการโครงสร้างอย่างง่ายได้อย่างมีประสิทธิภาพเทียบเท่ากับสมาชิกของโครงสร้างหรือไม่ (A: รับ JIT ใหม่กว่า) สิ่งที่ฉันคิดว่าฉันรู้: คอมไพเลอร์. NET JIT ดั้งเดิมจะไม่อินไลน์อะไรที่เกี่ยวข้องกับโครงสร้าง ควรใช้โครงสร้างที่แปลกประหลาดเฉพาะเมื่อคุณต้องการประเภทค่าขนาดเล็กที่ควรปรับให้เหมาะสมเช่นบิวท์อิน แต่เป็นจริง โชคดีที่ใน. NET 3.5SP1 และ. (ฉันเดาว่าพวกเขาทำอย่างนั้นเพราะไม่เช่นนั้นโครงสร้างซับซ้อนใหม่ที่พวกเขาแนะนำจะมีประสิทธิภาพที่น่ากลัว ... ไม่เกี่ยวข้องกับปัญหานี้มากเกินไป สิ่งที่การทดสอบของฉันแสดงให้เห็น: ฉันได้ตรวจสอบแล้วว่าฉันมี JIT Optimizer รุ่นใหม่กว่าโดยตรวจสอบว่าไฟล์ …

1
ทำไม a.insert (0,0) ช้ากว่า [0: 0] = [0] มาก?
การใช้insertฟังก์ชั่นของรายการนั้นช้ากว่าการใช้เอฟเฟ็กต์แบบเดียวกันมาก: > python -m timeit -n 100000 -s "a=[]" "a.insert(0,0)" 100000 loops, best of 5: 19.2 usec per loop > python -m timeit -n 100000 -s "a=[]" "a[0:0]=[0]" 100000 loops, best of 5: 6.78 usec per loop (โปรดทราบว่าa=[]เป็นเพียงการตั้งค่าดังนั้นaเริ่มว่างเปล่าจากนั้นขยายเป็น 100,000 องค์ประกอบ) ตอนแรกฉันคิดว่าอาจเป็นการค้นหาแอตทริบิวต์หรือการเรียกใช้ค่าใช้จ่ายหรือมากกว่านั้น แต่การแทรกเข้าใกล้จุดสิ้นสุดแสดงว่าไม่สำคัญ: > python -m timeit -n 100000 -s "a=[]" …

7
วิธีที่เป็นนามธรรมเพื่อแยกแยะคอนสตรัคเตอร์ zero-arg สองตัว
ฉันมีชั้นเรียนเช่นนี้: struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; โดยปกติฉันต้องการเริ่มต้น (ศูนย์) เริ่มต้นcountsอาร์เรย์ตามที่แสดง ที่ตำแหน่งที่เลือกที่ระบุโดยการทำโปรไฟล์อย่างไรก็ตามฉันต้องการระงับการกำหนดค่าเริ่มต้นของอาร์เรย์เนื่องจากฉันรู้ว่าอาร์เรย์กำลังจะถูกเขียนทับ แต่คอมไพเลอร์ไม่ฉลาดพอที่จะเข้าใจได้ อะไรคือวิธีที่ใช้สำนวนและมีประสิทธิภาพในการสร้างตัวสร้าง zero-arg แบบ "รอง" ดังกล่าว ขณะนี้ฉันใช้คลาสแท็กuninit_tagที่ส่งผ่านเป็นอาร์กิวเมนต์ดัมมี่เช่น: struct uninit_tag{}; struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} event_counts(uninit_tag) {} // more stuff }; จากนั้นฉันเรียกผู้สร้างที่ไม่เริ่มต้นเช่นevent_counts c(uninit_tag{});เมื่อฉันต้องการที่จะปราบปรามการก่อสร้าง ฉันเปิดกว้างสำหรับการแก้ปัญหาที่ไม่เกี่ยวข้องกับการสร้างชั้นเรียนจำลองหรือมีประสิทธิภาพมากกว่าในบางด้านเป็นต้น

4
ทำไมซิปเร็วกว่า zip ใน Scala
ฉันได้เขียนโค้ดสกาล่าเพื่อดำเนินการองค์ประกอบที่ชาญฉลาดในคอลเลกชัน ที่นี่ฉันกำหนดสองวิธีที่ทำงานเดียวกัน วิธีการหนึ่งการใช้งานและการใช้งานอื่นzip ๆzipped def ES (arr :Array[Double], arr1 :Array[Double]) :Array[Double] = arr.zip(arr1).map(x => x._1 + x._2) def ES1(arr :Array[Double], arr1 :Array[Double]) :Array[Double] = (arr,arr1).zipped.map((x,y) => x + y) เพื่อเปรียบเทียบสองวิธีนี้ในแง่ของความเร็วฉันเขียนโค้ดต่อไปนี้: def fun (arr : Array[Double] , arr1 : Array[Double] , f :(Array[Double],Array[Double]) => Array[Double] , itr : Int) ={ val …

1
ไม่คาดหมายเวลาทำงานสำหรับรหัส HashSet
ตอนแรกฉันมีรหัสนี้: import java.util.*; public class sandbox { public static void main(String[] args) { HashSet<Integer> hashSet = new HashSet<>(); for (int i = 0; i < 100_000; i++) { hashSet.add(i); } long start = System.currentTimeMillis(); for (int i = 0; i < 100_000; i++) { for (Integer val : hashSet) { …

2
เหตุใดการรวมกลุ่มของกลุ่มจึงช้ากว่ากลุ่มที่เรียงลำดับมากกว่ากลุ่มที่ไม่เรียงลำดับ
ฉันมีจำนวนคอลัมน์ที่คั่นด้วยแท็บ 2 คอลัมน์คอลัมน์แรกคือจำนวนเต็มแบบสุ่มคอลัมน์ที่สองคือจำนวนเต็มที่ระบุกลุ่มซึ่งโปรแกรมนี้สามารถสร้างขึ้นได้ ( generate_groups.cc) #include <cstdlib> #include <iostream> #include <ctime> int main(int argc, char* argv[]) { int num_values = atoi(argv[1]); int num_groups = atoi(argv[2]); int group_size = num_values / num_groups; int group = -1; std::srand(42); for (int i = 0; i < num_values; ++i) { if (i % group_size …
27 c++  performance 

2
ทำไมรูปแบบ keras ทำนายผลช้าลงหลังจากรวบรวม
ในทางทฤษฎีการทำนายควรจะคงที่เนื่องจากน้ำหนักมีขนาดคงที่ ฉันจะกลับมาใช้ความเร็วใหม่หลังจากคอมไพล์ได้อย่างไร (โดยไม่จำเป็นต้องลบเครื่องมือเพิ่มประสิทธิภาพ) ดูการทดสอบที่เกี่ยวข้อง: https://nbviewer.jupyter.org/github/off99555/TensorFlowExperiments/blob/master/test-prediction-speed-after-compile.ipynb?flush_cache=true

2
Keras เวลาคาดการณ์ที่ไม่สอดคล้องกัน
ฉันพยายามประเมินเวลาทำนายของโมเดล keras ของฉันและตระหนักถึงสิ่งที่แปลก นอกเหนือจากความรวดเร็วตามปกติทุกครั้งในขณะที่แบบจำลองต้องใช้เวลานานในการทำนาย และไม่เพียงแค่นั้นเวลาเหล่านั้นยังเพิ่มโมเดลที่ยาวขึ้น ฉันเพิ่มตัวอย่างการทำงานขั้นต่ำเพื่อทำให้เกิดข้อผิดพลาดซ้ำ import time import numpy as np from sklearn.datasets import make_classification from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten # Make a dummy classification problem X, y = make_classification() # Make a dummy model model = Sequential() model.add(Dense(10, activation='relu',name='input',input_shape=(X.shape[1],))) model.add(Dense(2, activation='softmax',name='predictions')) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) …

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