I tried solving Maximum Subarray using both Javascript(Node.js) and Python, with brute force algorithm. Here's my code:
Using python:
from datetime import datetime
from random import randint
arr = [randint(-1000,1000) for i in range(1000)]
def bruteForce(a):
l = len(a)
max = 0
for i in range(l):
sum = 0
for j in range(i, l):
sum += a[j]
if(sum > max):
max = sum
return max
start = datetime.now()
bruteForce(arr)
end = datetime.now()
print(format(end-start))
And Javascript:
function randInt(start, end) {
return Math.floor(Math.random() * (end - start + 1))
}
var arr = Array(1000).fill(randInt(-1000, 1000))
function bruteForce(arr) {
var max = 0
for (let i = 0; i < arr.length; i++) {
var sum = 0
for (let j = i; j < arr.length; j++) {
sum += arr[j]
max = Math.max(max, sum)
}
}
return max
}
var start = performance.now()
bruteForce(arr)
var end = performance.now()
console.log(end - start)
Javascript got a result of about 0.187 seconds, while python got 4.75s - about 25 times slower. Does my code not optimized or python is really that slower than javascript?
Yes it is. All modern JS engines are quite fast, and significantly faster than Python. But that doesn’t always matter, the context is important when deciding between languages based on performance.