Why is my computation so much faster in C# than Python

后端 未结 6 1645
日久生厌
日久生厌 2020-12-07 21:40

Below is a simple piece of process coded in C# and Python respectively (for those of you curious about the process, it\'s the solution for Problem

6条回答
  •  伪装坚强ぢ
    2020-12-07 22:06

    First of all you need to change the algorithm to solve this problem:

    #!/usr/bin/env python
    
    import sys
    from timeit import default_timer as timer
    
    pyver = sys.version_info;
    
    print(">")
    print(">  Smallest multiple of 2 ... K");
    print(">")
    print(">  Python version, interpreter version: {0}.{1}.{2}-{3}-{4}".format(
        pyver.major, pyver.minor, pyver.micro, pyver.releaselevel, pyver.serial))
    print(">")
    
    K = 20;
    
    print("  K = {0:d}".format(K))
    print("")
    
    t0 = timer()
    
    N = K
    NP1 = N + 1
    N2 = (N >> 1) + 1
    vec = range(0, NP1)
    smalestMultiple = 1
    
    for i in range(2, N2):
        divider = vec[i]
        if divider == 1:
            continue
        for j in range(i << 1, NP1, i):
            if (vec[j] % divider) == 0:
                vec[j] /= divider
    
    for i in range(2, NP1):
        if vec[i] != 1:
            smalestMultiple = smalestMultiple * vec[i]
    
    t1 = timer()
    
    print("  smalest multiple = {0:d}".format(smalestMultiple))
    print("  time elapsed = {0:f} sec.".format(t1 - t0))
    

    Otput on Linux/Fedora 28/Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz:

    >  Smallest multiple of 2 ... K
    >
    >  Python version, interpreter version: 2.7.15-final-0
    >
    >  K = 20
    >
    >  smalest multiple = 232792560
    >  time elapsed = 0.000032 sec.
    

提交回复
热议问题