6 ms·
Everything else isn't too slow, though, especially if you hit any meaningful IO.
by angersock 12y ago
Everything else isn't too slow, though, especially if you hit any meaningful IO.
- unstabilo 12y agoOr if you use clever algorithms. I don't have benchmarks at hand, but I suspect that an FFT in Python is faster than a naive Fourier transform in C.
- nadam 12y agoTheoretically this is true, but in practice, those who need to write very efficient code competitively, rarely use naive algorithms. (Pure C/C++ also isn't enough nowadays though, the processor isn't competitive with the GPU in a lot of algorithms, so CUDA/OpenCL needs to be also used in most cases.)
- stinos 12y agoNot sure if this way of comparing programming languages (i.e. do A in language X and do B in language Y => Y is not slower than X) makes enough sense to draw conclusions. If you can use clever algorithms, in the majority of cases you'd do so in any language and in the majority of cases C would lead to more performant code than Python. Then again, wheteher this matters in the scope of the actual application is something else.
- verbin217 12y agoI suspect his comment meant to imply that a level of skill exists for which a programmer could build an FFT in python, a plain DFT in C, but not a proper FFT in C. That programmer would benefit from using python.
- easytiger 12y agoErr, why?
- chris_b 12y agoBecause the FFT in python is almost certainly implemented in C, and probably more cleverly done than a naive FFT that I/you/someone would whip up as part of a C program.
- easytiger 12y agoIs this a joke? Something written with the same algorithm in c will be faster than python. Why not use someone elses non naive FFT impl in c then as well?
- andrepd 12y agoYeah, I really don't see the GP's point.
- rprospero 12y agoI think the argument isn't that Python code out performs C code, it's that code written by mediocre Python programmers often outperforms code written by mediocre C programmers. C code is fast enough the mediocre programmers get used to letting the language bail them out. Python programmers know that their language is slow and that they have to work around it. I've encountered this several times in my own career. A co-worker who writes in C will be implementing a process in parallel with my Python implementation. A week later, my O(N) Python code is outperforming my colleagues O(N^3) C code, since I chose a more complex algorithm which is trickier to get right. The C programmer then re-implements my method in C, which would completely trounce my own code, except I've spent that time leaning on BLAS and LAPACK, speeding up my operations again. The C programmer then starts using fast libraries instead of her own code, again beating my old source, only to find that I've now pushed a good chunk of the processing onto the GPU. Eventually, I will run out of tricks. The final draft of the C code will trounce the final draft of my Python code. However, during most of the creation process, my Python usually out performs their C. Also, a truly talented C programmer would write my colleague's final draft as her first draft, negating every advantage that I had in the process. However, that's not a situation that I'm likely to run into, because places hiring truly talented programmers aren't likely to be hiring me.
- GFK_of_xmaspast 12y agoI think the replies to this post are getting confused between the FFT/DFT, which is O(n log n), and the "naive Fourier transform", O(n2). My experience with numerics in regular python is that they're generally 50-500x slower than the equivalent in C/C++, this just pushes back the point at which the asymptotics take over.
- blt 12y agoC has libraries too, you know :)
- kbart 12y agoYeah, tell that to embedders and kernel/driver programmers.
- CHY872 12y agoand there the additional complexity of C++ is a barrier to entry but no more, so no biggie in this context.
- AlexandrB 12y agoThe irony is that at least one class of kernel developers (Linux) refuse to touch C++.
- GFK_of_xmaspast 12y agoYeah, but how much of that is because Torvalds has opinions and how much of it is actual fact and preference.
- MrScruff 12y agoThere are many applications that either aren't typically IO bound, or where the IO (eg. gpu<->memory) is fast enough that you'll likely need C++ to maximise performance. Writing software that pushes bleeding edge hardware is fun, which is why many people still want to learn C++.
- angersock 12y agoOh, sure, but the vast vast vast majority of applications--especially that people are hiring for--aren't what you're referring to.
- MrScruff 12y agoStatistically I've no doubt you're right. However there are still a bunch of jobs where performance matters. If I left my job and industry, I'm fairly certain I could find another employer that found value in having a specific piece of code run as fast as possible.
- blt 12y agoI work on programs that are CPU and memory access bound.