I have been working with 64 bit Perl 5.6.1 on the SGI Origin platform
using MIPS processors for nearly three years and great
success. Recently, we purchased an SGI Altix which uses the Itanium 2
processors (ia64), and I've gotten a large amount of our environment
to build and pass self-tests on this platform using Perl 5.8.4.

Recently, we've come across a major problem -- the time to exit
programs having large hashes is unacceptably long. I traced the
problem to non-constant deletion times for hash entries, where the
deletion times increase as the number of elements that have been
deleted goes up. Here's a sample program:

#!/stf/sys/bin/perl -w

use strict;

my %h = ();

for (my $i = 0; $i < 4000000; $i++) {
    if ($i % 1000000 == 0) {
        print "Element $i added\n";
    }
    $h{$i . "a"} = $i;
}


printf "Hash construction done %s\n", scalar(%h);
for (my $i = 0; $i < 4000000; $i++) {
    if ($i % 10000 == 0) {
        printf "Element $i deleted. %%h = %s.\n", scalar(%h);
    }
    delete $h{$i . "a"};
}

print "Hash entry deletion done\n";

END {
    print "In end block\n";
}

Has anyone seen this behavior? It appears to be limited to just
the Itanium platform -- the MIPS platform does not have the problem.
Thanks. --Bob

+-------------------------------+--------------------------------+
| Robert E. Bruccoleri, Ph.D.   | Phone: 609 818 7251            |
| Research Fellow               | Fax:   609 818 3100            |
| Applied Genomics              | email: [EMAIL PROTECTED]            |
| Bristol-Myers Squibb Company  | Ship:  Room 3A-023,            |
| Mail: HW3-0.03, P.O. Box 5400 |   311 Pennington-Rocky Hill Rd |
|   Princeton, NJ 08543-5400    |   Pennington NJ 08534          |
+-------------------------------+--------------------------------+

Reply via email to