Python 3.3 vs. MSDOS Basic

Alexander Blinne news at blinne.net
Tue Feb 19 01:11:45 CET 2013


Am 18.02.2013 20:13, schrieb John Immarino:
> I coded a Python solution for Problem #14 on the Project Euler website. I was very surprised to find that it took 107 sec. to run even though it's a pretty simple program.  I also coded an equivalent solution for the problem in the old MSDOS basic. (That's the 16 bit app of 1980s vintage.)  It ran in 56 sec. Is there a flaw in my coding, or is Python really this slow in this particular application. MSDOS Basic usually runs at a snails pace compared to Python.

> max=0
> m=0
> while m<=1000000:
>     m+=1
>     count=0
>     n=m
>     while n!=1:
>         count+=1
>         if n%2==0:
>             n=n//2
>         else:
>             n=3*n+1
>     if count>max:
>          max=count
>          num=m
> print(num,max)

I cannot compare my timings with basic but python 2.7.3 and python 3.2.3
are both equally slow hier (~50 sec).
pypy is a lot faster (only some old version 1.7.0, current versions
should be faster still) with about 5 sec.

The following C-Program:

#include <stdio.h>

int main(void) {

  int max = 0;
  int m = 0;
  long int n;
  int count;
  int num;

  while(m<=1000000) {
    m++;
    n = m;
    count = 0;

    while(n != 1) {
      count++;
      if(n % 2 == 0) {
        n = n / 2;
      }
      else {
        n = n*3 + 1;
      }
    }

    if(count > max) {
      max = count;
      num = m;
    }
  }

  printf("%d, %d\n", num, max);
}

Does the job in just under 1 sec.

Greetings
Alexander









More information about the Python-list mailing list