Yeah it uses BLAS, you can read about it here https://markus-beuckelmann.de/blog/boosting-numpy-blas.html
On Fri, 25 Feb 2022, 09:54 SW, <walke...@hotmail.co.uk> wrote: > I think it uses fortran (or used to?) but yes, still close to the metal. > > Thanks, > S > > On 25/02/2022 10:41, Giorgio Zoppi wrote: > > Well, > numpy is written in C :) Maybe your C is not the numpy equivalent? > Best Regards, > Giorgio > > Il giorno ven 25 feb 2022 alle ore 09:03 BELAHCENE Abdelkader < > abdelkader.belahc...@enst.dz> ha scritto: > >> Hi, >> a lot of people think that C (or C++) is faster than python, yes I agree, >> but I think that's not the case with numpy, I believe numpy is faster than >> C, at least in some cases. >> >> >> *Is there another explanation ? Or where can find a doc speaking about >> the subject? *Thanks a lot >> Regards >> Numpy implements vectorization for arrays, or I'm wrong. Anyway here is >> an example Let's look at the following case: >> Here is the result on my laptop i3: >> >> Labs$ *python3 tempsExe.py 50000* >> sum with Python: 1250025000 and NumPy 1250025000 >> time used Python Sum: * 37.28 sec * >> time used Numpy Sum: *1.85 sec* >> >> Labs$ *./tt 50000 * >> >> >> * CPU time :7.521730 The value : 1250025000 * >> -------------------------------------------- >> >> This is the Python3 program : >> >> import timeit as it >> import numpy as np >> import sys >> try : >> n=eval(sys.argv[1]) >> except: >> print ("needs integer as argument") ; exit() >> >> a=range(1,n+1) >> b=np.array(a) >> def func1(): return sum(a) >> def func2(): return np.sum(b) >> >> print(f"sum with Python: {func1()} and NumPy {func2()} ") >> tm1=it.timeit(stmt=func1, number=n) >> print(f"time used Python Sum: {round(tm1,2)} sec") >> tm2=it.timeit(stmt=func2, number=n) >> print(f"time used Numpy Sum: {round(tm2,2)} sec") >> >> and Here the C program: >> #include <time.h> >> #include <stdio.h> >> #include <stdlib.h> >> long func1(int n){ >> long r=0; >> for (int i=1; i<= n;i++) r+= i; >> return r; >> } >> int main(int argc, char* argv[]){ >> clock_t c0, c1; >> long v,count; int n; >> if ( argc < 2) { >> printf("Please give an argument"); >> return -1; >> } >> n=atoi(argv[1]); >> c0 = clock(); >> *for (int j=0;j < n;j++) v=func1(n);* >> c1 = clock(); >> printf ("\tCPU time :%.2f sec", (float)(c1 - c0)/CLOCKS_PER_SEC); >> printf("\n\tThe value : %ld\n", v); >> } >> _______________________________________________ >> python-uk mailing list >> python-uk@python.org >> https://mail.python.org/mailman/listinfo/python-uk >> > > > -- > Life is a chess game - Anonymous. > > _______________________________________________ > python-uk mailing > listpython-uk@python.orghttps://mail.python.org/mailman/listinfo/python-uk > > > _______________________________________________ > python-uk mailing list > python-uk@python.org > https://mail.python.org/mailman/listinfo/python-uk >
_______________________________________________ python-uk mailing list python-uk@python.org https://mail.python.org/mailman/listinfo/python-uk