English Amiga Board Amiga Lore


Go Back   English Amiga Board > Coders > Coders. System

 
 
Thread Tools
Old 25 January 2015, 18:19   #1
SpeedGeek
Registered User
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 54
Posts: 341
Lightbulb Copymem Quick & Big Released!

CopyMem Quick & Big v1.6
Parts of patch install code by Dirk Busse 1999
Enhanced patch code by SpeedGeek 2015

INTRODUCTION:
CMQ&B is a big and faster Copymem + Copymemquick patch.
It's main goal is to give the fastest possible results with Testit
from COPMQR28. In order to obtain these fast results
CMQ&B must have the redundant and bloated code needed
to handle many "Worst Case" copies.

FEATURES:
- Installs one of the fastest CMQ patches for 68020+ Amigas
- Safely exits if the patch is already installed (e.g. a good patch
program should really avoid patching itself)

REQUIREMENTS:
- Amiga with 68020+

NOTES:
CMQ&B is an extension of CMQ&S. It has some extra code to
handle many small and misaligned copies. There are trade offs in
supporting these "Worst Case" copies. Specifically, The Best Case
performance has been reduced and the size of the patch has
increased to 184 bytes.

*********************************************************
CopyMem Quick & Big040 v1.8
Parts of patch install code by Dirk Busse 1999
Enhanced patch code by SpeedGeek 2015

INTRODUCTION:
CMQ&B040 is a big and faster Copymem + Copymemquick patch.
It's main goal is to give the fastest possible results with Testit
from COPMQR28. In order to obtain these fast results
CMQ&B040 must have the redundant and bloated code needed
to handle many "Worst Case" copies.

FEATURES:
- Automatically installs one of the fastest CMQ patches for 040+
- Uses Move16 address unrestricted code (See NOTES)
- New 1024-8192 byte Block Size Versions allow you to "Tune" the
MoveL vs. Move16 performance of your system
- Safely exits if the patch is already installed (e.g. a good patch
program should really avoid patching itself)

REQUIREMENTS:
- Amiga with 68040+
- Move16 is only supported only if the Source and Destination
address' have equal offsets. Also, it's only enabled for the
Block Size version you installed (1024-8192 bytes).

NOTES:
CMQ&B040 is an extension of CMQ&S040. It has some extra code to
handle many small and misaligned copies. There are trade offs in
supporting these "Worst Case" copies. Specifically, The Best Case
performance has been reduced and the size of the patch has
increased to 332 bytes. One additional benefit of the bloated code
is that CMQ&B040 now supports Move16 on word and byte offsets.
Unfortunately, these word and byte offsets will significantly reduce the
chances of meeting the source and destination alignment requirement
to enable Move16 (For more info about Move16 address unrestricted
code see the CMQ&S040 txt).
Attached Files
File Type: lha CMQ&B.LHA (1,008 Bytes, 125 views)
File Type: lha CMQ&B040.LHA (2.5 KB, 94 views)

Last edited by SpeedGeek; 27 January 2015 at 12:36.
SpeedGeek is offline  
AdSense AdSense  
Old 25 January 2015, 18:24   #2
SpeedGeek
Registered User
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 54
Posts: 341
Some Testit results for CMQ&B:

Code:
This test will compare the old CopyMem/CopyMemQuick routines with
the new ones you have installed.  A great variety of tests will be
run, and this might take some time, especially if your system has a
slow processor.

Initiating test (please be patient...)

Copying 65536 bytes 282 times (long -> long offset)
Old CopyMem    :  1.46 secs
New CopyMem    :  1.51 secs (+ 3.4%)
Old CopyMemQuick:  1.46 secs
New CopyMemQuick:  1.48 secs (+ 0.7%)

Copying 65536 bytes 73 times (long -> long+1 offset)
Old CopyMem    :  0.39 secs
New CopyMem    :  0.79 secs (+102.6%)

Copying 65536 bytes 206 times (long -> even offset)
Old CopyMem    :  1.13 secs
New CopyMem    :  1.56 secs (+38.0%)

Copying 65536 bytes 73 times (long -> even+1 offset)
Old CopyMem    :  0.39 secs
New CopyMem    :  0.81 secs (+105.1%)

Copying 65536 bytes 73 times (long+1 -> long offset)
Old CopyMem    :  0.45 secs
New CopyMem    :  0.81 secs (+80.0%)

Copying 65536 bytes 191 times (long+1 -> long+1 offset)
Old CopyMem    :  0.99 secs
New CopyMem    :  1.03 secs (+ 3.0%)

Copying 65536 bytes 73 times (long+1 -> even offset)
Old CopyMem    :  0.40 secs
New CopyMem    :  0.79 secs (+97.5%)

Copying 65536 bytes 250 times (long+1 -> even+1 offset)
Old CopyMem    :  1.38 secs
New CopyMem    :  1.48 secs (+ 6.5%)

Copying 65536 bytes 250 times (even -> long offset)
Old CopyMem    :  1.51 secs
New CopyMem    :  1.46 secs (- 3.3%)

Copying 65536 bytes 73 times (even -> long+1 offset)
Old CopyMem    :  0.43 secs
New CopyMem    :  0.81 secs (+88.4%)

Copying 65536 bytes 191 times (even -> even offset)
Old CopyMem    :  0.98 secs
New CopyMem    :  1.01 secs (+ 3.1%)

Copying 65536 bytes 73 times (even -> even+1 offset)
Old CopyMem    :  0.39 secs
New CopyMem    :  0.80 secs (+102.6%)

Copying 65536 bytes 73 times (even+1 -> long offset)
Old CopyMem    :  0.44 secs
New CopyMem    :  0.78 secs (+75.0%)

Copying 65536 bytes 206 times (even+1 -> long+1 offset)
Old CopyMem    :  1.25 secs
New CopyMem    :  1.55 secs (+24.0%)

Copying 65536 bytes 73 times (even+1 -> even offset)
Old CopyMem    :  0.43 secs
New CopyMem    :  0.81 secs (+88.4%)

Copying 65536 bytes 282 times (even+1 -> even+1 offset)
Old CopyMem    :  1.46 secs
New CopyMem    :  1.53 secs (+ 4.1%)

Copying 1024 bytes 16950 times (long -> long offset)
Old CopyMem    :  1.38 secs
New CopyMem    :  1.49 secs (+ 8.0%)
Old CopyMemQuick:  1.38 secs
New CopyMemQuick:  1.49 secs (+ 8.0%)

Copying 1024 bytes 4700 times (long -> long+1 offset)
Old CopyMem    :  0.40 secs
New CopyMem    :  0.81 secs (+102.5%)

Copying 1024 bytes 12000 times (even -> even offset)
Old CopyMem    :  1.01 secs
New CopyMem    :  1.08 secs (+ 5.9%)

Copying 128 bytes 98000 times (long -> long offset)
Old CopyMem    :  1.08 secs
New CopyMem    :  1.06 secs (- 0.9%)
Old CopyMemQuick:  0.98 secs
New CopyMemQuick:  0.99 secs (+ 1.0%)

Copying 128 bytes 77500 times (even -> even offset)
Old CopyMem    :  0.89 secs
New CopyMem    :  0.93 secs (+ 3.4%)

Copying 19 bytes 294000 times (long -> long offset)
Old CopyMem    :  0.53 secs
New CopyMem    :  0.68 secs (+28.3%)

Copying 18 bytes 311000 times (long -> long offset)
Old CopyMem    :  0.54 secs
New CopyMem    :  0.66 secs (+20.4%)

Copying 17 bytes 331500 times (long -> long offset)
Old CopyMem    :  0.56 secs
New CopyMem    :  0.71 secs (+25.0%)

Copying 16 bytes 478000 times (long -> long offset)
Old CopyMem    :  0.76 secs
New CopyMem    :  0.91 secs (+18.4%)
Old CopyMemQuick:  0.61 secs
New CopyMemQuick:  0.54 secs (- 9.8%)

Copying 8 bytes 530000 times (long -> long offset)
Old CopyMem    :  0.46 secs
New CopyMem    :  1.08 secs (+132.6%)
Old CopyMemQuick:  0.30 secs
New CopyMemQuick:  0.28 secs (- 3.3%)

Copying 4 bytes 715000 times (long -> long offset)
Old CopyMem    :  0.26 secs
New CopyMem    :  0.83 secs (+215.4%)
Old CopyMemQuick:  0.05 secs
New CopyMemQuick:  0.23 secs (+360.0%)

Copying 1 bytes 1095000 times (long -> long offset)
Old CopyMem    :  0.41 secs
New CopyMem    :  0.51 secs (+24.4%)

Total timing:
-------------
Old routines    :  26.71 secs
New routines    :  33.48 secs
Total slowdown    :  25.31 %
Some Testit results for CMQ&B040:
Code:
This test will compare the old CopyMem/CopyMemQuick routines with
the new ones you have installed.  A great variety of tests will be
run, and this might take some time, especially if your system has a
slow processor.

Initiating test (please be patient...)

Copying 65536 bytes 565 times (long -> long offset)
Old CopyMem    :  4.08 secs
New CopyMem    :  5.89 secs (+44.4%)
Old CopyMemQuick:  4.08 secs
New CopyMemQuick:  5.86 secs (+43.6%)

Copying 65536 bytes 147 times (long -> long+1 offset)
Old CopyMem    :  1.46 secs
New CopyMem    :  1.61 secs (+10.3%)

Copying 65536 bytes 413 times (long -> even offset)
Old CopyMem    :  4.13 secs
New CopyMem    :  4.40 secs (+ 6.3%)

Copying 65536 bytes 147 times (long -> even+1 offset)
Old CopyMem    :  1.46 secs
New CopyMem    :  1.59 secs (+ 8.9%)

Copying 65536 bytes 147 times (long+1 -> long offset)
Old CopyMem    :  1.49 secs
New CopyMem    :  1.60 secs (+ 6.7%)

Copying 65536 bytes 382 times (long+1 -> long+1 offset)
Old CopyMem    :  2.71 secs
New CopyMem    :  3.96 secs (+46.1%)

Copying 65536 bytes 147 times (long+1 -> even offset)
Old CopyMem    :  1.48 secs
New CopyMem    :  1.61 secs (+ 8.8%)

Copying 65536 bytes 501 times (long+1 -> even+1 offset)
Old CopyMem    :  5.06 secs
New CopyMem    :  5.26 secs (+ 3.9%)

Copying 65536 bytes 501 times (even -> long offset)
Old CopyMem    :  5.16 secs
New CopyMem    :  5.24 secs (+ 1.5%)

Copying 65536 bytes 147 times (even -> long+1 offset)
Old CopyMem    :  1.53 secs
New CopyMem    :  1.59 secs (+ 3.9%)

Copying 65536 bytes 382 times (even -> even offset)
Old CopyMem    :  2.71 secs
New CopyMem    :  3.96 secs (+46.1%)

Copying 65536 bytes 147 times (even -> even+1 offset)
Old CopyMem    :  1.48 secs
New CopyMem    :  1.59 secs (+ 7.4%)

Copying 65536 bytes 147 times (even+1 -> long offset)
Old CopyMem    :  1.53 secs
New CopyMem    :  1.58 secs (+ 2.6%)

Copying 65536 bytes 413 times (even+1 -> long+1 offset)
Old CopyMem    :  4.30 secs
New CopyMem    :  4.41 secs (+ 2.5%)

Copying 65536 bytes 147 times (even+1 -> even offset)
Old CopyMem    :  1.53 secs
New CopyMem    :  1.59 secs (+ 3.9%)

Copying 65536 bytes 564 times (even+1 -> even+1 offset)
Old CopyMem    :  3.99 secs
New CopyMem    :  5.85 secs (+46.4%)

Copying 1024 bytes 33900 times (long -> long offset)
Old CopyMem    :  0.29 secs
New CopyMem    :  0.35 secs (+17.2%)
Old CopyMemQuick:  0.30 secs
New CopyMemQuick:  0.34 secs (+13.3%)

Copying 1024 bytes 9400 times (long -> long+1 offset)
Old CopyMem    :  0.16 secs
New CopyMem    :  0.28 secs (+68.7%)

Copying 1024 bytes 24000 times (even -> even offset)
Old CopyMem    :  0.24 secs
New CopyMem    :  0.25 secs (+ 0.0%)

Copying 128 bytes 196000 times (long -> long offset)
Old CopyMem    :  0.30 secs
New CopyMem    :  0.38 secs (+26.7%)
Old CopyMemQuick:  0.26 secs
New CopyMemQuick:  0.35 secs (+30.8%)

Copying 128 bytes 155000 times (even -> even offset)
Old CopyMem    :  0.28 secs
New CopyMem    :  0.31 secs (+10.7%)

Copying 19 bytes 588000 times (long -> long offset)
Old CopyMem    :  0.39 secs
New CopyMem    :  0.51 secs (+28.2%)

Copying 18 bytes 622000 times (long -> long offset)
Old CopyMem    :  0.38 secs
New CopyMem    :  0.41 secs (+ 7.9%)

Copying 17 bytes 663000 times (long -> long offset)
Old CopyMem    :  0.41 secs
New CopyMem    :  0.55 secs (+31.7%)

Copying 16 bytes 956000 times (long -> long offset)
Old CopyMem    :  0.53 secs
New CopyMem    :  0.58 secs (+ 7.5%)
Old CopyMemQuick:  0.53 secs
New CopyMemQuick:  0.51 secs (- 1.9%)

Copying 8 bytes 1060000 times (long -> long offset)
Old CopyMem    :  0.33 secs
New CopyMem    :  0.58 secs (+75.7%)
Old CopyMemQuick:  0.35 secs
New CopyMemQuick:  0.46 secs (+31.4%)

Copying 4 bytes 1430000 times (long -> long offset)
Old CopyMem    :  0.23 secs
New CopyMem    :  0.51 secs (+121.7%)
Old CopyMemQuick:  0.24 secs
New CopyMemQuick:  0.41 secs (+66.7%)

Copying 1 bytes 2190000 times (long -> long offset)
Old CopyMem    :  0.41 secs
New CopyMem    :  0.50 secs (+19.5%)

Total timing:
-------------
Old routines    :  53.98 secs
New routines    :  65.04 secs
Total slowdown    :  20.49 %
SpeedGeek is offline  
Old 26 January 2015, 15:39   #3
HanSolo
Registered User

 
Join Date: Aug 2014
Location: Gdynia/Poland
Posts: 144
Thanks for good patch. What is your next project ?
HanSolo is offline  
Old 27 January 2015, 12:32   #4
SpeedGeek
Registered User
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 54
Posts: 341
** NEWS UPDATE **

CMQ&B040 v1.8 released

v1.8 minor change
- removed obsolete Copymemquick source address compare code

@HanSolo
When there's nothing more to do on this project maybe some scsi.device stuff...
SpeedGeek is offline  
Old 14 October 2016, 21:54   #5
nogginthenog
Amigan

 
Join Date: Feb 2012
Location: London
Posts: 472
Hey SpeedGeek,

Where can I find version 1.8? Doesn't seem to be on Aminet.
nogginthenog is offline  
Old 15 October 2016, 12:16   #6
arti
Registered User

 
Join Date: Jul 2008
Location: Poland
Posts: 473
Shouldn't New CopyMem have shorter times?
arti is offline  
Old 15 October 2016, 16:27   #7
SpeedGeek
Registered User
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 54
Posts: 341
Quote:
Originally Posted by nogginthenog View Post
Hey SpeedGeek,

Where can I find version 1.8? Doesn't seem to be on Aminet.
That's because it's here on EAB (in post #1).

Quote:
Originally Posted by arti View Post
Shouldn't New CopyMem have shorter times?
Testit always compares the old Copymem against Copymemquicker 2.8. So old Copymem = CMQ&B and new Copymem = Copymemquicker 2.8.

Last edited by SpeedGeek; 15 October 2016 at 17:01.
SpeedGeek is offline  
Old 15 October 2016, 17:01   #8
nogginthenog
Amigan

 
Join Date: Feb 2012
Location: London
Posts: 472
Quote:
Originally Posted by SpeedGeek View Post
That's because it's here on EAB (in post #1).
Ah, I see my problem. I opened CMQ&B.LHA which says version 1.6 in the readme.

Thanks, I'll give it a try.
nogginthenog is offline  
Old 16 October 2016, 10:47   #9
trixster
Guru Meditating

 
Join Date: Jun 2014
Location: England
Posts: 785
How does CMQ&B compare in speed to matthey's CM060?

http://aminet.net/package/util/boot/CopyMem
trixster is offline  
AdSense AdSense  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
CopyMem Quick & Small released! SpeedGeek Coders. System 11 22 January 2015 16:33
The adventures of big will & sticky troll full registered version wanted mike4466 request.Old Rare Games 4 10 October 2014 11:25
Amiga Future Everywhere Phase 1 & 2 released AndreasM News 0 16 December 2013 18:15
Asterix: Operation Getafix / Aster & the Big Fight killergorilla HOL data problems 3 18 June 2013 18:23
BIG BIG BIG WINUAE CRASH (with .dmp file included) The Rom Alien support.WinUAE 4 31 August 2004 20:26

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 06:06.


Powered by vBulletin® Version 3.8.8 Beta 1
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Page generated in 0.16205 seconds with 15 queries