Leopold Toetsch wrote:

Did you have an optimized parrot compile?

( make progclean ; perl Configure.pl ... --optimize ; make -s)
No I hadn't, but I just did, using those exact commands(no additional options to Configure.pl), and had no perceivable performance change using any of the parrot variances(default, -P, -j). Is there a way to verify that an optimized build was truly made? Did you expect to see much of any difference? GCC issues(running 3.2.3)?

-Tupshin

Code available if anybody cares.


Yes please.
Alright...all versions are attached (sorry for spamming the list, but others might be interested). Some of the code is ugly (done around 3:00 in the morning), and some are in languages I am less then fluent in (last touched any flavor of assembly in 1985, and barely touched it then), so be kind. I don't believe I'm being too unfair to any of the languages, though feel free to tell me otherwise.

The python and c versions of prime2 come from a tutorial on optimizing python by writing extensions in C
http://kortis.to/radix/python_ext/
Modified slighly to behave more analogously to the first test, and some compilation bugs fixed.

TIA,
leo

WATF
(welcome after the fact)

-Tupshin
#include <stdio.h>


int main()
{
  int I1 = 1;
  int I2 = 100000;
  int I3;
  int I4;
  int I5;
  printf("\nThe primes up to ");
  printf("%d", I2);
  printf(" are:\n");
  
 REDO:
  I3 = 2;
  I4 = I1 / 2;
 LOOP:
  I5 = I1 % I3;
  if (I5) {goto OK;}
  goto NEXT;
 OK:
  I3++;
  if (I3 <= I4) {goto LOOP;}
    printf ("%d", I1);
      printf ("\n");
 NEXT:
  I1++;
  if (I1 <= I2) {goto REDO;}
}

Attachment: primes.pl
Description: Perl program

# Some simple code to print out the primes up to 100
# Leon Brocard <[EMAIL PROTECTED]>

        # I1 holds the number we're currently checking for primality
        set     I1, 1
        # I2 holds the highest number we want to check for primality
        set     I2, 100000
        print   "The primes up to "
        print   I2
        print   " are:\n"
        # I1 counts up to I2
REDO:   # I3 counts from 2 up to I4 (I1/2)
        set     I3, 2
        div     I4, I1, 2
LOOP:   # Check if I3 is a factor of I1
        mod     I5, I1, I3
        if      I5, OK
        # We've found a factor, so it can't be a prime and
        # we can skip right out of this loop and to the next
        # number
        branch  NEXT
OK:     inc     I3
        le      I3, I4, LOOP
        # We haven't found a factor so it must be a prime
        print   I1
        print   "\n"
NEXT:   # Move on to the next number
        inc     I1
        le      I1, I2, REDO
        end
int main(){
	int i=0, l=0, max=10000;
	
	while (1) {
		if (isprime1(i)==1) {
			printf("%i\n",i);
			l++;
		}
		i++;
		if (i==max){
			break;
		}
	}
	
	printf("primes calculated to %i\n",max);

}

int isprime1(int input)
{
	int n;

	if (input < 1) {
		return 0;
	}
	n = input - 1;

	while (n > 1){
		if (input%n == 0) return 0;
		n--;
	}
	return 1;
}

import os,sys
def isprime1(input):
    if input < 1:
        return 0
    
    n = input-1
    
    while n > 1:
        if input%n == 0:
            return 0
        n = n - 1

    return 1

def main():
    i = 0
    l = 0 
    max = 10000

    while 1:
        
        if isprime1(i):
            l = l +1
            print i
        i = i + 1
        if i == max:
            break

    print "primes calculated to ",max
    
if __name__ == "__main__":
    main()
set I1, 0
set I2, 0
set I3, 0
set I4, 10000

BEGINLOOP:
  branch PRIMECHECK
ISPRIME:
  print I1
  print "\n"
  inc I2
NOTPRIME:
  inc I1 
  eq I1,I4, DONE

PRIMECHECK:
 set I5, I1
 lt I5,1,NOTPRIME
 set I6,I5
 dec I6
NLOOP:
  mod I7, I5, I6
  eq I7, 0, NOTPRIME
  dec I6
  gt I6, 1, NLOOP
  branch ISPRIME

DONE:
  print"primes calculated to "
  print I1
  print "\n"
  end

Reply via email to