Skip to content

Commit 3bd1f7d

Browse files
⚡️ Speed up function funcA by 4,000%
Here’s an optimized version of your program. **What was improved:** - Replaced explicit loops and `sum(range(...))` with the arithmetic progression formula for improved constant-time performance. - Switched from a generator expression in join to `map(str, ...)` for slightly better speed and lower memory usage with large numbers.
1 parent b7258a9 commit 3bd1f7d

File tree

1 file changed

+15
-11
lines changed
  • code_to_optimize/code_directories/simple_tracer_e2e

1 file changed

+15
-11
lines changed

code_to_optimize/code_directories/simple_tracer_e2e/workload.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33

44

55
def funcA(number):
6-
number = number if number < 1000 else 1000
7-
k = 0
8-
for i in range(number * 100):
9-
k += i
10-
# Simplify the for loop by using sum with a range object
11-
j = sum(range(number))
6+
number = min(1000, number)
127

13-
# Use a generator expression directly in join for more efficiency
14-
return " ".join(str(i) for i in range(number))
8+
# Use the arithmetic progression sum formula for sum(range(number * 100))
9+
k = ((number * 100) - 1) * (number * 100) // 2
10+
11+
# Use the arithmetic progression sum formula for sum(range(number))
12+
j = (number - 1) * number // 2
13+
14+
# Use map and str.join for better performance compared to generator expressions in this context
15+
return " ".join(map(str, range(number)))
1516

1617

1718
def test_threadpool() -> None:
@@ -22,14 +23,15 @@ def test_threadpool() -> None:
2223
for r in result:
2324
print(r)
2425

26+
2527
class AlexNet:
2628
def __init__(self, num_classes=1000):
2729
self.num_classes = num_classes
2830
self.features_size = 256 * 6 * 6
2931

3032
def forward(self, x):
3133
features = self._extract_features(x)
32-
34+
3335
output = self._classify(features)
3436
return output
3537

@@ -44,6 +46,7 @@ def _classify(self, features):
4446
total = sum(features)
4547
return [total % self.num_classes for _ in features]
4648

49+
4750
class SimpleModel:
4851
@staticmethod
4952
def predict(data):
@@ -52,10 +55,10 @@ def predict(data):
5255
for i in range(500):
5356
for x in data:
5457
computation = 0
55-
computation += x * i ** 2
58+
computation += x * i**2
5659
result.append(computation)
5760
return result
58-
61+
5962
@classmethod
6063
def create_default(cls):
6164
return cls()
@@ -69,6 +72,7 @@ def test_models():
6972
model2 = SimpleModel.create_default()
7073
prediction = model2.predict(input_data)
7174

75+
7276
if __name__ == "__main__":
7377
test_threadpool()
7478
test_models()

0 commit comments

Comments
 (0)