| Bug #57153 | Performance of call to POWER(LOG(EXP(0.25)),0.5) slower than expected on 5.1.51 | ||
|---|---|---|---|
| Submitted: | 30 Sep 2010 20:32 | Modified: | 11 Feb 2018 13:02 | 
| Reporter: | Max Crowe | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: DML | Severity: | S5 (Performance) | 
| Version: | 5.1.51 | OS: | Other (Centos 5.5) | 
| Assigned to: | CPU Architecture: | Any | |
| Tags: | exp, log, power | ||
   [30 Sep 2010 20:32]
   Max Crowe        
  
 
   [1 Oct 2010 13:01]
   Valeriy Kravchuk        
  I do not see the real difference of mysql-5.1 (current bzr tree) vs mysql-5.0 (current bzr tree):
macbook-pro:5.1 openxs$ bin/mysql -uroot testReading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.52-debug Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE `tmp_speedtest` (
    ->   `val` float DEFAULT NULL
    -> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.05 sec)
mysql> insert into tmp_speedtest values (0.0);
Query OK, 1 row affected (0.00 sec)
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 8 rows affected (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 16 rows affected (0.00 sec)
Records: 16  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 32 rows affected (0.01 sec)
Records: 32  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 64 rows affected (0.00 sec)
Records: 64  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 128 rows affected (0.00 sec)
Records: 128  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 256 rows affected (0.00 sec)
Records: 256  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 512 rows affected (0.00 sec)
Records: 512  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 1024 rows affected (0.01 sec)
Records: 1024  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 2048 rows affected (0.01 sec)
Records: 2048  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 4096 rows affected (0.02 sec)
Records: 4096  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 8192 rows affected (0.02 sec)
Records: 8192  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 16384 rows affected (0.05 sec)
Records: 16384  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 32768 rows affected (0.11 sec)
Records: 32768  Duplicates: 0  Warnings: 0
mysql>  update tmp_speedtest set val=power(log(exp(0.25)),0.5);
Query OK, 65536 rows affected (0.59 sec)
Rows matched: 65536  Changed: 65536  Warnings: 0
mysql>  update tmp_speedtest set val=sqrt(log(exp(0.25)));
Query OK, 0 rows affected (0.07 sec)
Rows matched: 65536  Changed: 0  Warnings: 0
mysql>  update tmp_speedtest set val=power(log(exp(0.26)),0.5);
Query OK, 65536 rows affected (0.59 sec)
Rows matched: 65536  Changed: 65536  Warnings: 0
mysql>  update tmp_speedtest set val=power(log(exp(0.25)),0.3);
Query OK, 65536 rows affected (0.61 sec)
Rows matched: 65536  Changed: 65536  Warnings: 0
mysql> exit
Now compare to this, on the same hardware:
macbook-pro:5.0 openxs$ bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.92-debug Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE `tmp_speedtest` (   `val` float DEFAULT NULL ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into tmp_speedtest values (0.0);Query OK, 1 row affected (0.00 sec)
mysql> insert into tmp_speedtest select * from tmp_speedtest;Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 8 rows affected (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 16 rows affected (0.00 sec)
Records: 16  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 32 rows affected (0.00 sec)
Records: 32  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 64 rows affected (0.00 sec)
Records: 64  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 128 rows affected (0.00 sec)
Records: 128  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 256 rows affected (0.00 sec)
Records: 256  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 512 rows affected (0.00 sec)
Records: 512  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 1024 rows affected (0.01 sec)
Records: 1024  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 2048 rows affected (0.01 sec)
Records: 2048  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 4096 rows affected (0.01 sec)
Records: 4096  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 8192 rows affected (0.02 sec)
Records: 8192  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 16384 rows affected (0.05 sec)
Records: 16384  Duplicates: 0  Warnings: 0
mysql> insert into tmp_speedtest select * from tmp_speedtest;
Query OK, 32768 rows affected (0.09 sec)
Records: 32768  Duplicates: 0  Warnings: 0
mysql>  update tmp_speedtest set val=power(log(exp(0.25)),0.5);
Query OK, 65536 rows affected (0.55 sec)
Rows matched: 65536  Changed: 65536  Warnings: 0
mysql>  update tmp_speedtest set val=sqrt(log(exp(0.25)));
Query OK, 0 rows affected (0.06 sec)
Rows matched: 65536  Changed: 0  Warnings: 0
mysql>  update tmp_speedtest set val=power(log(exp(0.26)),0.5);
Query OK, 65536 rows affected (0.51 sec)
Rows matched: 65536  Changed: 65536  Warnings: 0
mysql>  update tmp_speedtest set val=power(log(exp(0.25)),0.3);
Query OK, 65536 rows affected (0.54 sec)
Rows matched: 65536  Changed: 65536  Warnings: 0
sqrt() runs faster than power(...,0.5) - that's all I can see in my tests.
 
   [5 Oct 2010 17:50]
   MySQL Verification Team        
  Like Valeriy I couldn't repeat on Windows 64-bit. Are you able to test on another machine?. Thanks in advance.
   [6 Nov 2010 0:14]
   Bugs System        
  No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
   [11 Feb 2018 13:02]
   Roy Lyseng        
  Posted by developer: Closing as bug has been suspended for 7 years.
