[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #32967] Slow norm in Octave 3.4.0 (Mac?)

From: anonymous
Subject: [Octave-bug-tracker] [bug #32967] Slow norm in Octave 3.4.0 (Mac?)
Date: Thu, 31 Mar 2011 15:48:47 +0000
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv: Gecko/2011032020 Camino/2.0.7 (like Firefox/3.0.19)


                 Summary: Slow norm in Octave 3.4.0 (Mac?)
                 Project: GNU Octave
            Submitted by: None
            Submitted on: Thu 31 Mar 2011 03:48:47 PM UTC
                Category: Configuration and Build System
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Improvement/Optimization
                  Status: None
             Assigned to: None
         Originator Name: Vic Norton
        Originator Email: address@hidden
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 3.4.0
        Operating System: Mac OS



I have compared the speed of the instructions "norm(x)" and
"sqrt(sum(x .* x))" on Thomas Treichl's Octave.app (3.2.3) and Julien
Salort's Octave.app (3.4.0). These versions of octave can be found at
2011-03-27 binary of Octave 3.4.0 (2011-03-27)
2009-10-03 binary of Octave 3.2.3 (2010-11-23)

Here is a summary of the results I observed.
1. Octave 3.4.0 is a bit slower than Octave 3.2.3 on sqrt(sum(x .* x)).
2. On Octave 3.2.3, norm(x) is a bit faster than sqrt(sum(x .* x)). This
   is as it should be since NRM2 is a BLAS.
3. On Octave 3.4.0, sqrt(sum(x .* x)) is four times as fast as norm(x).
   This is not as it should be for the reason cited in 2.
4. norm(x) on Octave 3.2.3 is nine times as fast as norm(x) on Octave

My test script and my results appear below.

The test script. The two different shebang lines placed at the top of
the file test the two different versions of octave.
   # norm2test.m
   ntests = 20; n = 1e6; x = rand(n, 1);
   test1 = zeros(ntests, 1); test2 = zeros(ntests, 1);
   for i = 1 : ntests
     test1(i) = toc;
   for i = 1 : ntests
     sqrt(sum(x .* x));
     test2(i) = toc;
   printf ("norm2 speed test - octave %s\n", version);
   printf ("%40s\n","ellapsed times");
   printf ("%30s%10s\n", "mean", "stdv");
   printf ("%-20s", "norm(x)");
   printf ("%10.2e", mean(test1));
   printf ("%10.2e", std(test1));
   printf ("\n");
   printf ("%-20s", "sqrt(sum(x .* x))");
   printf ("%10.2e", mean(test2));
   printf ("%10.2e", std(test2));
   printf ("\n");

The output.
norm2 speed test - octave 3.2.3
                        ellapsed times
                        mean      stdv
norm(x)               7.06e-03  2.62e-05
sqrt(sum(x .* x))     1.06e-02  1.98e-03
norm2 speed test - octave 3.4.0
                        ellapsed times
                        mean      stdv
norm(x)               6.48e-02  3.78e-04
sqrt(sum(x .* x))     1.46e-02  1.21e-04


Reply to this item at:


  Message sent via/by Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]