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 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

Reply via email to