Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchmarking 'Bansheequeen' and 'Overwatch' drawings #1

Open
Sanmayce opened this issue Aug 23, 2019 · 14 comments
Open

Benchmarking 'Bansheequeen' and 'Overwatch' drawings #1

Sanmayce opened this issue Aug 23, 2019 · 14 comments

Comments

@Sanmayce
Copy link

Hi Christoph,
wanted to see your superb RLE [de]crunching two random drawings from my 'Deathship' compression corpus:

  • The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp 17.5 MB (18,432,056 bytes)
  • Overwatch-Cast-4K-Wallpaper.bmp 24.7 MB (25,987,472 bytes)

Previously (the old trle) did scream on 'overwatch' setting a Pareto:
Sanmayce/Nakamichi#1 (comment)

C Size     ratio   C MB/s   D MB/s    Name
16056915   61.8    310.68   7771.37   trle
25987476   100.0   9991.34  10191.17  memcpy

The 'Banshee Queen' is not so RLEish, wonder how your RLE8 extreme fares against the trle...

The .BMPs were created out by these .JPGs:

@Sanmayce
Copy link
Author

By the way, could you make a command line (.BAT) file to compile with GCC (Windows)?
I have GCC and Intel compilers, hate to use 'make' and project scripts, tried to compile with Intel first:

E:\______movies\src>dir
 Volume in drive E is Sanmayce_111GB
 Volume Serial Number is 1410-10F9

 Directory of E:\______movies\src

08/23/2019  12:37 PM    <DIR>          .
08/23/2019  12:37 PM    <DIR>          ..
08/22/2019  12:32 PM            14,072 main.c
08/22/2019  12:32 PM             4,971 rle8.h
08/22/2019  12:32 PM            26,491 rle8_cpu.c
08/22/2019  12:32 PM            23,234 rle8_extreme_cpu.c
08/22/2019  12:32 PM            11,064 rle8_ocl.c
08/22/2019  12:32 PM             1,912 rle8_ocl_kernel.h
08/22/2019  12:32 PM            12,829 rle8_ultra_cpu.c
08/22/2019  12:32 PM             9,080 rleX_extreme_cpu.h
               8 File(s)        103,653 bytes
               2 Dir(s)   1,600,815,104 bytes free

E:\______movies\src>icl /Ox main.c rle8_cpu.c rle8_extreme_cpu.c rle8_ocl.c rle8_extreme_cpu.c
Intel(R) C   Compiler XE for applications running on IA-32, Version 15.0.0.108 Build 20140726
Copyright (C) 1985-2014 Intel Corporation.  All rights reserved.

main.c
E:\______movies\src\rle8.h(5): catastrophic error: cannot open source file "stdbool.h"
  #include <stdbool.h>
                      ^

E:\______movies\src>

@rainerzufalldererste
Copy link
Owner

Hi Georgi,

The en-/decoding speed can be heavily dependent on the target machine, so in order to get a comparable benchmark I recommend running it on your machine. :)

I've disabled OpenCL for builds that don't use premake so that you don't get any linker errors because of OpenCL some other small portability improvements. In it's updated form I was able to compile it through both, GCC on Windows (both WSL & MSYS2) and the Intel Compiler.

Intel Compiler

cd rle8
mkdir build_icc
cd build_icc
icl /Ox ../src/*.c

GCC via MSYS2

cd rle8
mkdir build_gcc
cd build_gcc
gcc -O4 ../src/*.c -o rle8

Please let me know if your problem is resolved.

@Sanmayce
Copy link
Author

Thanks, will run the benchmark as soon as I have the binaries, tried the new .ZIP:

E:\rle8-master>dir
08/23/2019  12:14 PM             4,464 .gitignore
08/23/2019  12:14 PM               102 .gitmodules
08/23/2019  12:14 PM    <DIR>          3rdParty
08/24/2019  08:26 AM    <DIR>          build_gcc
08/23/2019  12:14 PM               790 create_project.bat
08/23/2019  12:14 PM             1,269 LICENSE
08/24/2019  08:24 AM                59 makeEXE_GCC.bat
08/24/2019  08:13 AM                51 makeEXE_ICL.bat
08/23/2019  12:14 PM    <DIR>          premake
08/23/2019  12:14 PM               468 premake5.lua
08/23/2019  12:14 PM             1,939 project.lua
08/23/2019  12:14 PM             5,763 README.md
08/23/2019  12:14 PM    <DIR>          src

E:\rle8-master>makeEXE_ICL.bat

E:\rle8-master>mkdir build_icc

E:\rle8-master>cd build_icc

E:\rle8-master\build_icc>icl /Ox ../src/*.c
Intel(R) C   Compiler XE for applications running on IA-32, Version 15.0.0.108 Build 20140726
Copyright (C) 1985-2014 Intel Corporation.  All rights reserved.

main.c
../src\rle8.h(5): catastrophic error: cannot open source file "inttypes.h"
  #include <inttypes.h>
                       ^

E:\rle8-master\build_icc>

And the GCC attempt:

E:\rle8-master>dir
 Volume in drive E is Sanmayce_111GB
 Volume Serial Number is 1410-10F9

 Directory of E:\rle8-master

08/24/2019  08:25 AM    <DIR>          .
08/24/2019  08:25 AM    <DIR>          ..
08/23/2019  12:14 PM             4,464 .gitignore
08/23/2019  12:14 PM               102 .gitmodules
08/23/2019  12:14 PM    <DIR>          3rdParty
08/23/2019  12:14 PM               790 create_project.bat
08/23/2019  12:14 PM             1,269 LICENSE
08/24/2019  08:24 AM                59 makeEXE_GCC.bat
08/24/2019  08:13 AM                51 makeEXE_ICL.bat
08/23/2019  12:14 PM    <DIR>          premake
08/23/2019  12:14 PM               468 premake5.lua
08/23/2019  12:14 PM             1,939 project.lua
08/23/2019  12:14 PM             5,763 README.md
08/23/2019  12:14 PM    <DIR>          src
               9 File(s)         14,905 bytes
               5 Dir(s)   7,243,309,056 bytes free

E:\rle8-master>makeEXE_GCC.bat

E:\rle8-master>mkdir build_gcc

E:\rle8-master>cd build_gcc

E:\rle8-master\build_gcc>gcc -O4 ../src/*.c -o rle8
../src/main.c: In function 'main':
../src/main.c:252:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:252:5: note: use option -std=c99 or -std=gnu99 to compile your code
../src/main.c:355:18: error: redefinition of 'i'
../src/main.c:252:18: note: previous definition of 'i' was here
../src/main.c:355:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:423:7: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:434:11: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:440:13: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:454:26: error: redefinition of 'j'
../src/main.c:440:26: note: previous definition of 'j' was here
../src/main.c:454:13: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:457:26: error: redefinition of 'j'
../src/main.c:454:26: note: previous definition of 'j' was here
../src/main.c:457:13: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:462:26: error: redefinition of 'j'
../src/main.c:457:26: note: previous definition of 'j' was here
../src/main.c:462:13: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:471:15: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:479:28: error: redefinition of 'j'
../src/main.c:471:28: note: previous definition of 'j' was here
../src/main.c:479:15: error: 'for' loop initial declarations are only allowed in C99 mode
../src/main.c:484:28: error: redefinition of 'j'
../src/main.c:479:28: note: previous definition of 'j' was here
../src/main.c:484:15: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8m_compress':
../src/rle8_cpu.c:254:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:254:3: note: use option -std=c99 or -std=gnu99 to compile your code
../src/rle8_cpu.c: In function 'rle8m_decompress':
../src/rle8_cpu.c:313:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_get_compress_info':
../src/rle8_cpu.c:370:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:388:17: error: redefinition of 'i'
../src/rle8_cpu.c:370:17: note: previous definition of 'i' was here
../src/rle8_cpu.c:388:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:394:18: error: conflicting types for 'i'
../src/rle8_cpu.c:388:17: note: previous definition of 'i' was here
../src/rle8_cpu.c:394:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:404:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:409:7: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_get_compress_info_only_max_frequency':
../src/rle8_cpu.c:457:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:478:17: error: redefinition of 'i'
../src/rle8_cpu.c:457:17: note: previous definition of 'i' was here
../src/rle8_cpu.c:478:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:495:18: error: conflicting types for 'i'
../src/rle8_cpu.c:478:17: note: previous definition of 'i' was here
../src/rle8_cpu.c:495:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:505:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:510:7: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_write_compress_info':
../src/rle8_cpu.c:538:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:542:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:556:15: error: redefinition of 'i'
../src/rle8_cpu.c:538:15: note: previous definition of 'i' was here
../src/rle8_cpu.c:556:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_read_decompress_info':
../src/rle8_cpu.c:644:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:669:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:678:17: error: conflicting types for 'i'
../src/rle8_cpu.c:669:18: note: previous definition of 'i' was here
../src/rle8_cpu.c:678:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:680:7: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_decompress_single_sse':
../src/rle8_cpu.c:702:3: error: unknown type name '__m128i'
../src/rle8_cpu.c:708:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_decompress_single_avx2':
../src/rle8_cpu.c:787:3: error: unknown type name '__m256i'
../src/rle8_cpu.c:793:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_decompress_multi_sse':
../src/rle8_cpu.c:871:5: error: unknown type name '__m128i'
../src/rle8_cpu.c:883:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_decompress_multi_avx':
../src/rle8_cpu.c:948:5: error: unknown type name '__m256i'
../src/rle8_cpu.c:960:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c: In function 'rle8_decompress_with_info':
../src/rle8_cpu.c:1032:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:1074:11: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_cpu.c:1083:54: error: '__m128i' undeclared (first use in this function)
../src/rle8_cpu.c:1083:54: note: each undeclared identifier is reported only once for each function it appears in
../src/rle8_cpu.c:1084:25: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'bb'
../src/rle8_cpu.c:1084:25: error: 'bb' undeclared (first use in this function)
../src/rle8_cpu.c:1088:40: error: expected expression before ')' token
../src/rle8_cpu.c:1096:39: error: expected expression before ')' token
../src/rle8_cpu.c:1103:40: error: expected expression before ')' token
../src/rle8_extreme_cpu.c: In function 'rle8_extreme_single_compress':
../src/rle8_extreme_cpu.c:344:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_extreme_cpu.c:344:5: note: use option -std=c99 or -std=gnu99 to compile your code
../src/rle8_extreme_cpu.c:365:17: error: redefinition of 'i'
../src/rle8_extreme_cpu.c:344:17: note: previous definition of 'i' was here
../src/rle8_extreme_cpu.c:365:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_extreme_cpu.c: In function 'rle8_extreme_decompress_multi_sse':
../src/rle8_extreme_cpu.c:821:3: error: unknown type name '__m128i'
../src/rle8_extreme_cpu.c:856:5: error: '__m128i' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:856:5: note: each undeclared identifier is reported only once for each function it appears in
../src/rle8_extreme_cpu.c:856:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:856:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:856:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:856:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:864:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:864:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:864:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c: In function 'rle8_extreme_decompress_multi_avx':
../src/rle8_extreme_cpu.c:874:3: error: unknown type name '__m256i'
../src/rle8_extreme_cpu.c:909:5: error: '__m256i' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:909:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:909:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:909:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:909:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:917:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:917:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:917:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c: In function 'rle8_extreme_decompress_single_sse':
../src/rle8_extreme_cpu.c:924:3: error: unknown type name '__m128i'
../src/rle8_extreme_cpu.c:957:5: error: '__m128i' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:957:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:957:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:957:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:957:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:965:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:965:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:965:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c: In function 'rle8_extreme_decompress_single_avx':
../src/rle8_extreme_cpu.c:975:3: error: unknown type name '__m256i'
../src/rle8_extreme_cpu.c:1008:5: error: '__m256i' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:1008:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:1008:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:1008:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:1008:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rle8_extreme_cpu.c:1016:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:1016:5: error: expected expression before ')' token
../src/rle8_extreme_cpu.c:1016:5: error: expected expression before ')' token
In file included from ../src/rle8_extreme_cpu.c:1023:0:
../src/rleX_extreme_cpu.h: In function 'rle16_extreme_decompress_sse':
../src/rleX_extreme_cpu.h:241:3: error: unknown type name '__m128i'
../src/rleX_extreme_cpu.h:275:5: error: '__m128i' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:283:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h: In function 'rle16_extreme_decompress_avx':
../src/rleX_extreme_cpu.h:293:3: error: unknown type name '__m256i'
../src/rleX_extreme_cpu.h:325:5: error: '__m256i' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:333:5: error: expected expression before ')' token
In file included from ../src/rle8_extreme_cpu.c:1027:0:
../src/rleX_extreme_cpu.h: In function 'rle32_extreme_decompress_sse':
../src/rleX_extreme_cpu.h:241:3: error: unknown type name '__m128i'
../src/rleX_extreme_cpu.h:275:5: error: '__m128i' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:283:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h: In function 'rle32_extreme_decompress_avx':
../src/rleX_extreme_cpu.h:293:3: error: unknown type name '__m256i'
../src/rleX_extreme_cpu.h:325:5: error: '__m256i' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:333:5: error: expected expression before ')' token
In file included from ../src/rle8_extreme_cpu.c:1031:0:
../src/rleX_extreme_cpu.h: In function 'rle64_extreme_decompress_sse':
../src/rleX_extreme_cpu.h:241:3: error: unknown type name '__m128i'
../src/rleX_extreme_cpu.h:275:5: error: '__m128i' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:275:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:283:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h: In function 'rle64_extreme_decompress_avx':
../src/rleX_extreme_cpu.h:293:3: error: unknown type name '__m256i'
../src/rleX_extreme_cpu.h:325:5: error: '__m256i' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: expected expression before ')' token
../src/rleX_extreme_cpu.h:325:5: error: '_MM_HINT_T0' undeclared (first use in this function)
../src/rleX_extreme_cpu.h:333:5: error: expected expression before ')' token
../src/rle8_ultra_cpu.c: In function 'rle8_ultra_decompress_single_sse':
../src/rle8_ultra_cpu.c:203:3: error: unknown type name '__m128i'
../src/rle8_ultra_cpu.c:209:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_ultra_cpu.c:209:3: note: use option -std=c99 or -std=gnu99 to compile your code
../src/rle8_ultra_cpu.c: In function 'rle8_ultra_decompress_single_avx2':
../src/rle8_ultra_cpu.c:264:3: error: unknown type name '__m256i'
../src/rle8_ultra_cpu.c:270:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_ultra_cpu.c: In function 'rle8_ultra_decompress_multi_sse':
../src/rle8_ultra_cpu.c:323:5: error: unknown type name '__m128i'
../src/rle8_ultra_cpu.c:335:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_ultra_cpu.c: In function 'rle8_ultra_decompress_multi_avx':
../src/rle8_ultra_cpu.c:379:5: error: unknown type name '__m256i'
../src/rle8_ultra_cpu.c:391:5: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_ultra_cpu.c: In function 'rle8_ultra_decompress_with_info':
../src/rle8_ultra_cpu.c:453:3: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_ultra_cpu.c:495:11: error: 'for' loop initial declarations are only allowed in C99 mode
../src/rle8_ultra_cpu.c:504:54: error: '__m128i' undeclared (first use in this function)
../src/rle8_ultra_cpu.c:504:54: note: each undeclared identifier is reported only once for each function it appears in
../src/rle8_ultra_cpu.c:505:25: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'bb'
../src/rle8_ultra_cpu.c:505:25: error: 'bb' undeclared (first use in this function)
../src/rle8_ultra_cpu.c:509:40: error: expected expression before ')' token
../src/rle8_ultra_cpu.c:517:39: error: expected expression before ')' token
../src/rle8_ultra_cpu.c:524:40: error: expected expression before ')' token

E:\rle8-master\build_gcc>

Don't know enough to make it work, tried adding -std=c99 but it complained again.

@rainerzufalldererste
Copy link
Owner

I'm a bit confused about the running on IA-32 of your icl output. I'm getting Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.3.210 Build 20180410.
Are both gcc and icl 64 bit Binaries?

Could you please provide the output of this:

gcc -v
wmic OS get OSArchitecture, Name
wmic CPU get Caption, DeviceID, Name, NumberOfCores, MaxClockSpeed

@Sanmayce
Copy link
Author

I have two laptops, the old one (with Core 2) running Windows XP 32bit has installed Intel v15 and GCC v4.7.2:

E:\rle8-master\build_gcc>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.7.2/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.7.2/configure --enable-languages=c,c  ,ada,fortran,objc,obj-c   --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-lib
stdcxx-debug --disable-build-poststage1-with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.7.2 (GCC)

E:\rle8-master\build_gcc>wmic OS get OSArchitecture, Name
Node - NOVA
ERROR:
Code = 0x80041017
Description = Invalid query
Facility = WMI

E:\rle8-master\build_gcc>wmic CPU get Caption, DeviceID, Name, NumberOfCores, MaxClockSpeed
Caption                            DeviceID  MaxClockSpeed  Name                              NumberOfCores
x86 Family 6 Model 23 Stepping 10  CPU0      2933           Intel Pentium III Xeon processor  2

And the newer laptop i5-7200U running Windows 10 64bit has GCC v7.3.0 64bit:

D:\rle8-master>GCC -v
Using built-in specs.
COLLECT_GCC=GCC
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/7.3.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../src/configure --enable-languages=c,c   --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --disable-multilib --prefix=/c/temp/gcc/dest --with-sysroot=/c/temp/gcc/dest --disab
le-libstdcxx-pch --disable-libstdcxx-verbose --disable-nls --disable-shared --disable-win32-registry --with-tune=haswell --enable-threads=posix --enable-libgomp
Thread model: posix
gcc version 7.3.0 (GCC)

D:\rle8-master>wmic OS
BootDevice               BuildNumber  BuildType            Caption                   CodeSet  CountryCode  CreationClassName      CSCreationClassName   CSDVersion  CSName           CurrentTimeZone  DataExecutionPrevention_32
BitApplications  DataExecutionPrevention_Available  DataExecutionPrevention_Drivers  DataExecutionPrevention_SupportPolicy  Debug  Description      Distributed  EncryptionLevel  ForegroundApplicationBoost  FreePhysicalMemory
  FreeSpaceInPagingFiles  FreeVirtualMemory  InstallDate                LargeSystemCache  LastBootUpTime             LocalDateTime              Locale  Manufacturer           MaxNumberOfProcesses  MaxProcessMemorySize  MUILa
nguages  Name                                                              NumberOfLicensedUsers  NumberOfProcesses  NumberOfUsers  OperatingSystemSKU  Organization  OSArchitecture  OSLanguage  OSProductSuite  OSType  OtherT
ypeDescription  PAEEnabled  PlusProductID  PlusVersionNumber  PortableOperatingSystem  Primary  ProductType  RegisteredUser  SerialNumber             ServicePackMajorVersion  ServicePackMinorVersion  SizeStoredInPagingFiles
 Status  SuiteMask  SystemDevice             SystemDirectory      SystemDrive  TotalSwapSpaceSize  TotalVirtualMemorySize  TotalVisibleMemorySize  Version     WindowsDirectory
\Device\HarddiskVolume2  15063        Multiprocessor Free  Microsoft Windows 10 Pro  1252     1            Win32_OperatingSystem  Win32_ComputerSystem              COMPRESSIONETTE  -420             TRUE
                 TRUE                               TRUE                             2                                      FALSE  Compressionette  FALSE        256              2                           1323556
  96805952                94490088           20170331221802.000000-420                    20180625002836.407365-420  20180713114154.742000-420  0409    Microsoft Corporation  4294967295            137438953344          {"en-
US"}     Microsoft Windows 10 Pro|C:\Windows|\Device\Harddisk0\Partition4                         102                2              48                                64-bit          1033        256             18
                                                              FALSE                    TRUE     1            Windows User    00330-80000-00000-AA286  0                        0                        98304000
 OK      272        \Device\HarddiskVolume4  C:\Windows\system32  C:                               106590348               8286348                 10.0.15063  C:\Windows


D:\rle8-master>wmic CPU get Caption, DeviceID, Name, NumberOfCores, MaxClockSpeed
Caption                                DeviceID  MaxClockSpeed  Name                                      NumberOfCores
Intel64 Family 6 Model 142 Stepping 9  CPU0      2701           Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz  2


D:\rle8-master>makeEXE_GCC.bat

D:\rle8-master>mkdir build_gcc

D:\rle8-master>cd build_gcc

D:\rle8-master\build_gcc>gcc -O4 ../src/*.c -o rle8
../src/rle8_cpu.c:14:0: warning: "_STATIC_ASSERT" redefined
 #define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr) != 0]

In file included from ../src/rle8.h:6:0,
                 from ../src/rle8_cpu.c:1:
c:\mingw\x86_64-w64-mingw32\include\malloc.h:27:0: note: this is the location of the previous definition
 #define _STATIC_ASSERT(expr) extern void __static_assert_t(int [(expr)?1:-1])

../src/rle8_extreme_cpu.c:15:0: warning: "_STATIC_ASSERT" redefined
 #define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr) != 0]

In file included from ../src/rle8.h:6:0,
                 from ../src/rle8_extreme_cpu.c:1:
c:\mingw\x86_64-w64-mingw32\include\malloc.h:27:0: note: this is the location of the previous definition
 #define _STATIC_ASSERT(expr) extern void __static_assert_t(int [(expr)?1:-1])

../src/rle8_ultra_cpu.c:13:0: warning: "_STATIC_ASSERT" redefined
 #define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr) != 0]

In file included from ../src/rle8.h:6:0,
                 from ../src/rle8_ultra_cpu.c:1:
c:\mingw\x86_64-w64-mingw32\include\malloc.h:27:0: note: this is the location of the previous definition
 #define _STATIC_ASSERT(expr) extern void __static_assert_t(int [(expr)?1:-1])


D:\rle8-master\build_gcc>

@rainerzufalldererste
Copy link
Owner

I think the gcc build on your i5-7200U should have produced an executable.
All of those complaints are just warnings, not errors.

@Sanmayce
Copy link
Author

Indeed, please wait some 30 minutes, already running successfully it, along with it for comparison running Oodle 'Selkie', Lizard, LzTurbo and trle ... on both .BMPs ....

@Sanmayce
Copy link
Author

Here we go...

First, Overwatch-Cast-4K-Wallpaper.bmp:

D:\rle8-master\build_gcc>TEST.BAT Overwatch-Cast-4K-Wallpaper.bmp

D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp
Mode: rle8 Normal (8 Runs)

Compressed 25987472 bytes -> 16919322 bytes (65.105686 %) in 53.315750 ms. (=> 464.845465 MB/s)
 [52.590900 ms .. 57.763500 ms | 429.052682 MB/s .. 471.252338 MB/s]

Decompressed in 17.763288 ms. (=> 1395.213842 MB/s)
 [16.831400 ms .. 22.879200 ms | 1083.236503 MB/s .. 1472.461269 MB/s]


D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp --single
Mode: rle8 Normal Single-Symbol-Mode (8 Runs)

Compressed 25987472 bytes -> 17346101 bytes (66.747935 %) in 52.709975 ms. (=> 470.187751 MB/s)
 [51.873200 ms .. 57.711000 ms | 429.442993 MB/s .. 477.772426 MB/s]

Decompressed in 4.608425 ms. (=> 5377.886066 MB/s)
 [3.935600 ms .. 8.682900 ms | 2854.298056 MB/s .. 6297.282395 MB/s]


D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp --ultra
Mode: rle8 Ultra (8 Runs)

Compressed 25987472 bytes -> 17419684 bytes (67.031083 %) in 55.899050 ms. (=> 443.363252 MB/s)
 [55.229100 ms .. 58.914700 ms | 420.668943 MB/s .. 448.741417 MB/s]

Decompressed in 17.027013 ms. (=> 1455.545099 MB/s)
 [16.148000 ms .. 21.634000 ms | 1145.584940 MB/s .. 1534.777347 MB/s]


D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 8
Mode: rle8 Extreme with 8 Bit Symbols (8 Runs)

Compressed 25987472 bytes -> 16126053 bytes (62.053181 %) in 49.450538 ms. (=> 501.179276 MB/s)
 [48.847700 ms .. 52.249700 ms | 474.329701 MB/s .. 507.364412 MB/s]

Decompressed in 3.649938 ms. (=> 6790.139446 MB/s)
 [3.052000 ms .. 7.401000 ms | 3348.680529 MB/s .. 8120.440562 MB/s]


D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 16
Mode: rle8 Extreme with 16 Bit Symbols (8 Runs)

Compressed 25987472 bytes -> 16253530 bytes (62.543713 %) in 26.144462 ms. (=> 947.947757 MB/s)
 [25.688700 ms .. 28.928800 ms | 856.709735 MB/s .. 964.766010 MB/s]

Decompressed in 3.660738 ms. (=> 6770.107006 MB/s)
 [3.053500 ms .. 7.415700 ms | 3342.042504 MB/s .. 8116.451480 MB/s]


D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 32
Mode: rle8 Extreme with 32 Bit Symbols (8 Runs)

Compressed 25987472 bytes -> 16408098 bytes (63.138492 %) in 23.764612 ms. (=> 1042.877707 MB/s)
 [23.319300 ms .. 26.582900 ms | 932.313051 MB/s .. 1062.792819 MB/s]

Decompressed in 3.653350 ms. (=> 6783.796952 MB/s)
 [3.029700 ms .. 7.354500 ms | 3369.853096 MB/s .. 8180.210778 MB/s]


D:\rle8-master\build_gcc>rle8 Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 64
Mode: rle8 Extreme with 64 Bit Symbols (8 Runs)

Compressed 25987472 bytes -> 16589918 bytes (63.838137 %) in 20.263725 ms. (=> 1223.051763 MB/s)
 [19.605900 ms .. 24.221800 ms | 1023.193346 MB/s .. 1264.088085 MB/s]

Decompressed in 3.922300 ms. (=> 6318.635646 MB/s)
 [3.031200 ms .. 7.318300 ms | 3386.522088 MB/s .. 8176.162772 MB/s]

Second, The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp:

D:\rle8-master\build_gcc>TEST.BAT "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp"

D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp"
Mode: rle8 Normal (8 Runs)

Compressed 18432056 bytes -> 18432352 bytes (100.001606 %) in 41.589625 ms. (=> 422.657776 MB/s)
 [40.776100 ms .. 45.223900 ms | 388.692227 MB/s .. 431.090232 MB/s]

Decompressed in 2.339200 ms. (=> 7514.611152 MB/s)
 [1.649600 ms .. 4.780500 ms | 3677.058552 MB/s .. 10656.024737 MB/s]


D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --single
Mode: rle8 Normal Single-Symbol-Mode (8 Runs)

Compressed 18432056 bytes -> 18432352 bytes (100.001606 %) in 41.895800 ms. (=> 419.568988 MB/s)
 [40.849500 ms .. 47.093000 ms | 373.265207 MB/s .. 430.315632 MB/s]

Decompressed in 2.360500 ms. (=> 7446.802968 MB/s)
 [1.631900 ms .. 4.748900 ms | 3701.526334 MB/s .. 10771.602675 MB/s]


D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --ultra
Mode: rle8 Ultra (8 Runs)

Compressed 18432056 bytes -> 18432352 bytes (100.001606 %) in 41.584738 ms. (=> 422.707451 MB/s)
 [40.760200 ms .. 47.045900 ms | 373.638902 MB/s .. 431.258394 MB/s]

Decompressed in 2.348987 ms. (=> 7483.300105 MB/s)
 [1.656400 ms .. 4.819100 ms | 3647.606069 MB/s .. 10612.278680 MB/s]


D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --extreme --x-size 8
Mode: rle8 Extreme with 8 Bit Symbols (8 Runs)

Compressed 18432056 bytes -> 18418537 bytes (99.926655 %) in 40.295063 ms. (=> 436.236534 MB/s)
 [39.405100 ms .. 45.923700 ms | 382.769211 MB/s .. 446.088918 MB/s]

Decompressed in 3.165913 ms. (=> 5552.326037 MB/s)
 [2.405500 ms .. 6.302900 ms | 2788.903268 MB/s .. 7307.494660 MB/s]


D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --extreme --x-size 16
Mode: rle8 Extreme with 16 Bit Symbols (8 Runs)

Compressed 18432056 bytes -> 18420434 bytes (99.936947 %) in 20.530638 ms. (=> 856.192527 MB/s)
 [19.664400 ms .. 24.847600 ms | 707.439689 MB/s .. 893.908708 MB/s]

Decompressed in 3.089138 ms. (=> 5690.319193 MB/s)
 [2.378400 ms .. 5.316400 ms | 3306.406291 MB/s .. 7390.757823 MB/s]


D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --extreme --x-size 32
Mode: rle8 Extreme with 32 Bit Symbols (8 Runs)

Compressed 18432056 bytes -> 18422298 bytes (99.947060 %) in 21.135950 ms. (=> 831.672028 MB/s)
 [20.400000 ms .. 24.934300 ms | 704.979823 MB/s .. 861.675412 MB/s]

Decompressed in 3.110175 ms. (=> 5651.829368 MB/s)
 [2.424100 ms .. 5.351500 ms | 3284.719874 MB/s .. 7251.424614 MB/s]


D:\rle8-master\build_gcc>rle8 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --extreme --x-size 64
Mode: rle8 Extreme with 64 Bit Symbols (8 Runs)

Compressed 18432056 bytes -> 18424984 bytes (99.961632 %) in 20.175838 ms. (=> 871.249008 MB/s)
 [19.510700 ms .. 24.565000 ms | 715.578197 MB/s .. 900.950679 MB/s]

Decompressed in 3.253150 ms. (=> 5403.433105 MB/s)
 [2.350800 ms .. 6.491000 ms | 2708.084795 MB/s .. 7477.530375 MB/s]

And mixed with TurboBench results:

D:\TEXTORAMIC_benchmarking_2019-Aug-06>"turbobench_v18.05_-_build_04_May_2018" Overwatch-Cast-4K-Wallpaper.bmp -eoodle,111,119/lzturbo,10,20,30/lizard,11,21,31,41/trle -I3 -J31 -k1 -B2G
      C Size  ratio%                           C MB/s     D MB/s   Name            File
    11688248    45.0                           239.87    1317.56   lzturbo 30                       Overwatch-Cast-4K-Wallpaper.bmp
    12718066    48.9                             1.95    4042.23   oodle 119                        Overwatch-Cast-4K-Wallpaper.bmp
    13069385    50.3                           160.05    2805.51   lizard 41                        Overwatch-Cast-4K-Wallpaper.bmp
    13252436    51.0                           219.60    3250.06   lizard 21                        Overwatch-Cast-4K-Wallpaper.bmp
    13724502    52.8                           827.28    2624.20   lzturbo 20                       Overwatch-Cast-4K-Wallpaper.bmp
    13766558    53.0                           176.61    4262.34   oodle 111                        Overwatch-Cast-4K-Wallpaper.bmp
    13858734    53.3                           874.56    3298.32   lzturbo 10                       Overwatch-Cast-4K-Wallpaper.bmp
    14326336    55.1                           223.18    2096.95   lizard 31                        Overwatch-Cast-4K-Wallpaper.bmp
    15113396    58.2                           296.57    4101.56   lizard 11                        Overwatch-Cast-4K-Wallpaper.bmp
    16056915    61.8                           310.37    7745.89   trle                             Overwatch-Cast-4K-Wallpaper.bmp

    16126053 rle8 Extreme with 8 Bit Symbols   507 MB/s  8120 MB/s ! outside TurboBench !
    16253530 rle8 Extreme with 16 Bit Symbols  964 MB/s  8116 MB/s ! outside TurboBench !
    16408098 rle8 Extreme with 32 Bit Symbols 1062 MB/s  8180 MB/s ! outside TurboBench !
    16589918 rle8 Extreme with 64 Bit Symbols 1264 MB/s  8176 MB/s ! outside TurboBench !
    16919322 rle8 Normal                       471 MB/s  1472 MB/s ! outside TurboBench !
    17346101 rle8 Normal Single-Symbol-Mode    477 MB/s  6297 MB/s ! outside TurboBench !
    17419684 rle8 Ultra                        448 MB/s  1534 MB/s ! outside TurboBench !

D:\TEXTORAMIC_benchmarking_2019-Aug-06>"turbobench_v18.05_-_build_04_May_2018" "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" -eoodle,111,119/lzturbo,10,20,30/lizard,11,21,31,41/trle -I3 -J31 -k1 -B2G
      C Size  ratio%                           C MB/s     D MB/s   Name            File
    16035883    87.0                           195.61    1269.86   lzturbo 30                       The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17509991    95.0                          1026.91    3844.02   lzturbo 20                       The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17518154    95.0                           272.20    5330.26   lizard 31                        The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17586102    95.4                           496.85    6158.39   lizard 11                        The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17591510    95.4                          1104.84    5413.23   lzturbo 10                       The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17720783    96.1                             1.71    6736.86   oodle 119                        The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17745211    96.3                            94.64    5179.00   lizard 41                        The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    17784060    96.5                           133.69    5628.11   lizard 21                        The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18007457    97.7                           217.30    7323.03   oodle 111                        The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18413460    99.9                           197.58    8116.27   trle                             The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp

    18418537 rle8 Extreme with 8 Bit Symbols   446 MB/s  7307 MB/s ! outside TurboBench !
    18420434 rle8 Extreme with 16 Bit Symbols  893 MB/s  7390 MB/s ! outside TurboBench !
    18422298 rle8 Extreme with 32 Bit Symbols  861 MB/s  7251 MB/s ! outside TurboBench !
    18424984 rle8 Extreme with 64 Bit Symbols  900 MB/s  7477 MB/s ! outside TurboBench !
    18432352 rle8 Normal                       431 MB/s 10656 MB/s ! outside TurboBench !
    18432352 rle8 Normal Single-Symbol-Mode    430 MB/s 10771 MB/s ! outside TurboBench !
    18432352 rle8 Ultra                        431 MB/s 10612 MB/s ! outside TurboBench !

D:\TEXTORAMIC_benchmarking_2019-Aug-06>

Wow, congratulations for setting Pareto with rle8 Extreme on ... WoW!

Note: In the hurry forgot to start the shell in Administrative mode, results should be slightly better in it.

Filetest-wise, if you have some good one in mind I will test it as well, I find the 'girl.bmp' too "untelling", if such a file has to represent scanned old FAX dumps at least it has to feature text and logos.

Oh, and it would be interesting to run the negative modes of latest Zstd, as a complementary.

@Sanmayce
Copy link
Author

And for good measure latest Zstd:

D:\rle8-master\build_gcc>zstd-v1.4.3-win64.exe -b1 -e22 --fast=22 Overwatch-Cast-4K-Wallpaper.bmp
-22#4K-Wallpaper.bmp :  25987472 ->  14662906 (1.772),1440.2 MB/s ,3344.5 MB/s
-21#4K-Wallpaper.bmp :  25987472 ->  14637066 (1.775),1424.1 MB/s ,3330.5 MB/s
-20#4K-Wallpaper.bmp :  25987472 ->  14563475 (1.784),1371.6 MB/s ,3176.6 MB/s
-19#4K-Wallpaper.bmp :  25987472 ->  14530550 (1.788),1364.1 MB/s ,3195.1 MB/s
-18#4K-Wallpaper.bmp :  25987472 ->  14506367 (1.791),1354.3 MB/s ,3216.6 MB/s
-17#4K-Wallpaper.bmp :  25987472 ->  14403366 (1.804),1289.1 MB/s ,3046.1 MB/s
-16#4K-Wallpaper.bmp :  25987472 ->  14389717 (1.806),1301.9 MB/s ,3126.6 MB/s
-15#4K-Wallpaper.bmp :  25987472 ->  14354101 (1.810),1282.7 MB/s ,3109.1 MB/s
-14#4K-Wallpaper.bmp :  25987472 ->  14270389 (1.821),1225.8 MB/s ,2979.1 MB/s
-13#4K-Wallpaper.bmp :  25987472 ->  14239381 (1.825),1208.4 MB/s ,2973.3 MB/s
-12#4K-Wallpaper.bmp :  25987472 ->  14214694 (1.828),1201.0 MB/s ,2970.1 MB/s
-11#4K-Wallpaper.bmp :  25987472 ->  14095329 (1.844),1128.4 MB/s ,2801.9 MB/s
-10#4K-Wallpaper.bmp :  25987472 ->  14057550 (1.849),1111.5 MB/s ,2818.6 MB/s
-9#-4K-Wallpaper.bmp :  25987472 ->  14012924 (1.855),1090.1 MB/s ,2803.0 MB/s
-8#-4K-Wallpaper.bmp :  25987472 ->  13874994 (1.873),1011.3 MB/s ,2617.0 MB/s
-7#-4K-Wallpaper.bmp :  25987472 ->  13825365 (1.880), 988.4 MB/s ,2637.2 MB/s
-6#-4K-Wallpaper.bmp :  25987472 ->  13757376 (1.889), 947.4 MB/s ,2601.8 MB/s
-5#-4K-Wallpaper.bmp :  25987472 ->  13567295 (1.915), 859.9 MB/s ,2385.6 MB/s
-4#-4K-Wallpaper.bmp :  25987472 ->  13530090 (1.921), 827.2 MB/s ,2445.9 MB/s
-3#-4K-Wallpaper.bmp :  25987472 ->  13315702 (1.952), 741.6 MB/s ,2266.0 MB/s
-2#-4K-Wallpaper.bmp :  25987472 ->  13033877 (1.994), 633.4 MB/s ,2028.5 MB/s
-1#-4K-Wallpaper.bmp :  25987472 ->  12930766 (2.010), 530.3 MB/s ,1998.7 MB/s
 0#-4K-Wallpaper.bmp :  25987472 ->  11791905 (2.204), 179.6 MB/s , 979.2 MB/s
 1#-4K-Wallpaper.bmp :  25987472 ->  12623710 (2.059), 399.4 MB/s ,1000.6 MB/s
 2#-4K-Wallpaper.bmp :  25987472 ->  12033720 (2.160), 288.5 MB/s , 962.4 MB/s
 3#-4K-Wallpaper.bmp :  25987472 ->  11791905 (2.204), 180.0 MB/s , 979.1 MB/s
 4#-4K-Wallpaper.bmp :  25987472 ->  11528103 (2.254), 102.2 MB/s , 969.5 MB/s
 5#-4K-Wallpaper.bmp :  25987472 ->  11169828 (2.327),  41.9 MB/s , 934.8 MB/s
 6#-4K-Wallpaper.bmp :  25987472 ->  11085728 (2.344),  30.9 MB/s , 946.6 MB/s
 7#-4K-Wallpaper.bmp :  25987472 ->  11058396 (2.350),  28.3 MB/s , 966.8 MB/s
 8#-4K-Wallpaper.bmp :  25987472 ->  11043944 (2.353),  26.1 MB/s , 985.0 MB/s
 9#-4K-Wallpaper.bmp :  25987472 ->  10971507 (2.369),  25.2 MB/s , 987.5 MB/s
10#-4K-Wallpaper.bmp :  25987472 ->  10766983 (2.414),  21.3 MB/s , 884.9 MB/s
11#-4K-Wallpaper.bmp :  25987472 ->  10710668 (2.426),  21.1 MB/s , 858.8 MB/s
12#-4K-Wallpaper.bmp :  25987472 ->  10696935 (2.429),  19.8 MB/s , 859.9 MB/s
13#-4K-Wallpaper.bmp :  25987472 ->  10706388 (2.427),  14.1 MB/s , 870.1 MB/s
14#-4K-Wallpaper.bmp :  25987472 ->  10672393 (2.435),  13.6 MB/s , 859.4 MB/s
15#-4K-Wallpaper.bmp :  25987472 ->  10650716 (2.440),  12.0 MB/s , 852.9 MB/s
16#-4K-Wallpaper.bmp :  25987472 ->  10528725 (2.468),  11.0 MB/s , 855.2 MB/s
17#-4K-Wallpaper.bmp :  25987472 ->  10269064 (2.531),  8.24 MB/s , 622.8 MB/s
18#-4K-Wallpaper.bmp :  25987472 ->   9867668 (2.634),  6.39 MB/s , 485.7 MB/s
19#-4K-Wallpaper.bmp :  25987472 ->   9820314 (2.646),  5.37 MB/s , 473.2 MB/s
20#-4K-Wallpaper.bmp :  25987472 ->   9759551 (2.663),  5.34 MB/s , 509.3 MB/s
21#-4K-Wallpaper.bmp :  25987472 ->   9757421 (2.663),  5.05 MB/s , 511.1 MB/s
22#-4K-Wallpaper.bmp :  25987472 ->   9754701 (2.664),  4.53 MB/s , 511.1 MB/s

D:\rle8-master\build_gcc>zstd-v1.4.3-win64.exe -b1 -e22 --fast=22 "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp"
-22#de_3840x1600.bmp :  18432056 ->  18018450 (1.023),1787.6 MB/s ,5426.2 MB/s _Horde_3840x1600.bmp...
-21#de_3840x1600.bmp :  18432056 ->  18013472 (1.023),1773.1 MB/s ,5379.7 MB/s _Horde_3840x1600.bmp...
-20#de_3840x1600.bmp :  18432056 ->  18002203 (1.024),1728.8 MB/s ,5325.9 MB/s _Horde_3840x1600.bmp...
-19#de_3840x1600.bmp :  18432056 ->  17995167 (1.024),1718.4 MB/s ,5295.1 MB/s _Horde_3840x1600.bmp...
-18#de_3840x1600.bmp :  18432056 ->  17998517 (1.024),1720.3 MB/s ,5324.1 MB/s _Horde_3840x1600.bmp...
-17#de_3840x1600.bmp :  18432056 ->  17978852 (1.025),1675.1 MB/s ,5165.2 MB/s _Horde_3840x1600.bmp...
-16#de_3840x1600.bmp :  18432056 ->  17968817 (1.026),1658.3 MB/s ,5144.0 MB/s _Horde_3840x1600.bmp...
-15#de_3840x1600.bmp :  18432056 ->  17962194 (1.026),1639.3 MB/s ,5107.7 MB/s _Horde_3840x1600.bmp...
-14#de_3840x1600.bmp :  18432056 ->  17945166 (1.027),1597.5 MB/s ,5022.6 MB/s _Horde_3840x1600.bmp...
-13#de_3840x1600.bmp :  18432056 ->  17923771 (1.028),1573.6 MB/s ,4969.1 MB/s _Horde_3840x1600.bmp...
-12#de_3840x1600.bmp :  18432056 ->  17927002 (1.028),1560.4 MB/s ,4975.2 MB/s _Horde_3840x1600.bmp...
-11#de_3840x1600.bmp :  18432056 ->  17899320 (1.030),1515.2 MB/s ,4854.7 MB/s _Horde_3840x1600.bmp...
-10#de_3840x1600.bmp :  18432056 ->  17869462 (1.031),1490.7 MB/s ,4775.0 MB/s _Horde_3840x1600.bmp...
-9#rde_3840x1600.bmp :  18432056 ->  17872571 (1.031),1470.6 MB/s ,4784.7 MB/s _Horde_3840x1600.bmp...
-8#rde_3840x1600.bmp :  18432056 ->  17835686 (1.033),1420.3 MB/s ,4610.4 MB/s _Horde_3840x1600.bmp...
-7#rde_3840x1600.bmp :  18432056 ->  17813794 (1.035),1383.4 MB/s ,4574.8 MB/s _Horde_3840x1600.bmp...
-6#rde_3840x1600.bmp :  18432056 ->  17806862 (1.035),1353.4 MB/s ,4607.2 MB/s _Horde_3840x1600.bmp...
-5#rde_3840x1600.bmp :  18432056 ->  17737423 (1.039),1279.0 MB/s ,4299.3 MB/s _Horde_3840x1600.bmp...
-4#rde_3840x1600.bmp :  18432056 ->  17718919 (1.040),1230.5 MB/s ,4263.9 MB/s _Horde_3840x1600.bmp...
-3#rde_3840x1600.bmp :  18432056 ->  17682027 (1.042),1168.0 MB/s ,4157.5 MB/s _Horde_3840x1600.bmp...
-2#rde_3840x1600.bmp :  18432056 ->  17608136 (1.047),1067.4 MB/s ,3914.2 MB/s _Horde_3840x1600.bmp...
-1#rde_3840x1600.bmp :  18432056 ->  17585736 (1.048), 951.4 MB/s ,3838.9 MB/s _Horde_3840x1600.bmp...
 0#rde_3840x1600.bmp :  18432056 ->  16139172 (1.142), 168.3 MB/s , 606.2 MB/s _Horde_3840x1600.bmp...
 1#rde_3840x1600.bmp :  18432056 ->  16728252 (1.102), 429.5 MB/s , 640.7 MB/s _Horde_3840x1600.bmp...
 2#rde_3840x1600.bmp :  18432056 ->  16337455 (1.128), 306.8 MB/s , 621.5 MB/s _Horde_3840x1600.bmp...
 3#rde_3840x1600.bmp :  18432056 ->  16139172 (1.142), 169.3 MB/s , 606.0 MB/s _Horde_3840x1600.bmp...
 4#rde_3840x1600.bmp :  18432056 ->  15937833 (1.156),  76.4 MB/s , 580.2 MB/s _Horde_3840x1600.bmp...
 5#rde_3840x1600.bmp :  18432056 ->  15650583 (1.178),  21.8 MB/s , 545.2 MB/s _Horde_3840x1600.bmp...
 6#rde_3840x1600.bmp :  18432056 ->  15573832 (1.184),  15.1 MB/s , 542.3 MB/s _Horde_3840x1600.bmp...
 7#rde_3840x1600.bmp :  18432056 ->  15566229 (1.184),  14.3 MB/s , 547.1 MB/s _Horde_3840x1600.bmp...
 8#rde_3840x1600.bmp :  18432056 ->  15569666 (1.184),  13.6 MB/s , 547.1 MB/s _Horde_3840x1600.bmp...
 9#rde_3840x1600.bmp :  18432056 ->  15509718 (1.188),  13.6 MB/s , 536.3 MB/s _Horde_3840x1600.bmp...
10#rde_3840x1600.bmp :  18432056 ->  15367608 (1.199),  11.2 MB/s , 484.0 MB/s _Horde_3840x1600.bmp...
11#rde_3840x1600.bmp :  18432056 ->  15294587 (1.205),  11.3 MB/s , 463.1 MB/s _Horde_3840x1600.bmp...
12#rde_3840x1600.bmp :  18432056 ->  15287844 (1.206),  10.9 MB/s , 463.5 MB/s _Horde_3840x1600.bmp...
13#rde_3840x1600.bmp :  18432056 ->  15308463 (1.204),  8.10 MB/s , 471.8 MB/s _Horde_3840x1600.bmp...
14#rde_3840x1600.bmp :  18432056 ->  15262136 (1.208),  8.12 MB/s , 459.7 MB/s _Horde_3840x1600.bmp...
15#rde_3840x1600.bmp :  18432056 ->  15245394 (1.209),  7.41 MB/s , 456.0 MB/s _Horde_3840x1600.bmp...
16#rde_3840x1600.bmp :  18432056 ->  15155712 (1.216),  7.19 MB/s , 458.8 MB/s _Horde_3840x1600.bmp...
17#rde_3840x1600.bmp :  18432056 ->  14305689 (1.288),  4.46 MB/s , 304.8 MB/s _Horde_3840x1600.bmp...
18#rde_3840x1600.bmp :  18432056 ->  14116770 (1.306),  3.73 MB/s , 216.9 MB/s _Horde_3840x1600.bmp...
19#rde_3840x1600.bmp :  18432056 ->  14081228 (1.309),  3.50 MB/s , 209.9 MB/s _Horde_3840x1600.bmp...
20#rde_3840x1600.bmp :  18432056 ->  14048047 (1.312),  3.53 MB/s , 240.1 MB/s _Horde_3840x1600.bmp...
21#rde_3840x1600.bmp :  18432056 ->  14048077 (1.312),  3.71 MB/s , 240.4 MB/s _Horde_3840x1600.bmp...
22#rde_3840x1600.bmp :  18432056 ->  14048077 (1.312),  3.79 MB/s , 240.2 MB/s _Horde_3840x1600.bmp...

D:\rle8-master\build_gcc>

Zstd has become much faster, it sets Pareto frontier, the FASTEST compressor?

@rainerzufalldererste
Copy link
Owner

Wow, that's impressive!

A 24 bit run length encoding might produce much better compression ratios with BMPs, potentially I can add one to rle8.

@Sanmayce
Copy link
Author

Right, that's one of the hidden aspects/properties of benchmarking - it reveals hidden potential/scenarios.

    13766558    53.0                           176.61    4262.34   oodle 111               Overwatch-Cast-4K-Wallpaper.bmp
    13858734    53.3                           874.56    3298.32   lzturbo 10              Overwatch-Cast-4K-Wallpaper.bmp
    14662906 zstd -22                         1440       3344      ! outside TurboBench !  Overwatch-Cast-4K-Wallpaper.bmp
    15113396    58.2                           296.57    4101.56   lizard 11               Overwatch-Cast-4K-Wallpaper.bmp
    16056915    61.8                           310.37    7745.89   trle                    Overwatch-Cast-4K-Wallpaper.bmp
    16126053 rle8 Extreme with 8 Bit Symbols   507 MB/s  8120 MB/s ! outside TurboBench !  Overwatch-Cast-4K-Wallpaper.bmp
    18007457    97.7                           217.30    7323.03   oodle 111               The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18018450 zstd -22                         1787       5426      ! outside TurboBench !  The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18413460    99.9                           197.58    8116.27   trle                    The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18418537 rle8 Extreme with 8 Bit Symbols   446 MB/s  7307 MB/s ! outside TurboBench !  The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp

Very telling is this 'Overwatch' testfile.

@rainerzufalldererste
Copy link
Owner

I have added 24 Bit and 48 Bit en-/decoders to rle8 extreme.
They seem to perform quite well on Bitmaps with large areas of flat color (see README.md)

@Sanmayce
Copy link
Author

This latest .ZIP package compiles without any warnings with GCC v7.3.0.

The CAST:

E:\rle8-master>rle8.exe Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 24
Mode: rle8 Extreme with 24 Bit Symbols (8 Runs)

Compressed 25987472 bytes -> 14993816 bytes (57.696324 %) in 32.275050 ms. (=> 767.886792 MB/s)
 [29.647600 ms .. 50.494600 ms | 490.816535 MB/s .. 835.938983 MB/s]

Decompressed in 3.987950 ms. (=> 6214.617684 MB/s)
 [3.080300 ms .. 8.504200 ms | 2914.275840 MB/s .. 8045.834690 MB/s]

E:\rle8-master>rle8.exe Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 48
Mode: rle8 Extreme with 48 Bit Symbols (8 Runs)

Compressed 25987472 bytes -> 15598296 bytes (60.022368 %) in 24.035675 ms. (=> 1031.116646 MB/s)
 [23.216000 ms .. 28.935900 ms | 856.499525 MB/s .. 1067.521735 MB/s]

Decompressed in 3.878262 ms. (=> 6390.383476 MB/s)
 [2.995700 ms .. 7.643400 ms | 3242.481696 MB/s .. 8273.052907 MB/s]

E:\rle8-master>rle8.exe Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 24 --runs 128
Mode: rle8 Extreme with 24 Bit Symbols (128 Runs)

Compressed 25987472 bytes -> 14993816 bytes (57.696324 %) in 29.744995 ms. (=> 833.201832 MB/s)
 [29.625400 ms .. 35.435300 ms | 699.403832 MB/s .. 836.565400 MB/s]

Decompressed in 3.121477 ms. (=> 7939.699081 MB/s)
 [3.012000 ms .. 7.661200 ms | 3234.948128 MB/s .. 8228.281738 MB/s]

E:\rle8-master>rle8.exe Overwatch-Cast-4K-Wallpaper.bmp --extreme --x-size 48 --runs 128
Mode: rle8 Extreme with 48 Bit Symbols (128 Runs)

Compressed 25987472 bytes -> 15598296 bytes (60.022368 %) in 23.350636 ms. (=> 1061.366580 MB/s)
 [23.189400 ms .. 32.828800 ms | 754.934222 MB/s .. 1068.746263 MB/s]

Decompressed in 3.052347 ms. (=> 8119.517738 MB/s)
 [2.937900 ms .. 8.468400 ms | 2926.595885 MB/s .. 8435.816262 MB/s]

The Banshee:

E:\rle8-master>rle8.exe "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --extreme --x-size 24 --runs 128
Mode: rle8 Extreme with 24 Bit Symbols (128 Runs)

Compressed 18432056 bytes -> 18130354 bytes (98.363167 %) in 24.169111 ms. (=> 727.299339 MB/s)
 [23.885000 ms .. 52.716300 ms | 333.448637 MB/s .. 735.950530 MB/s]

Decompressed in 2.433659 ms. (=> 7222.943453 MB/s)
 [2.338700 ms .. 6.446800 ms | 2726.651735 MB/s .. 7516.217730 MB/s]


E:\rle8-master>rle8.exe "The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp" --extreme --x-size 48 --runs 128
Mode: rle8 Extreme with 48 Bit Symbols (128 Runs)

Compressed 18432056 bytes -> 18267592 bytes (99.107728 %) in 22.657193 ms. (=> 775.832136 MB/s)
 [22.452900 ms .. 28.316600 ms | 620.772918 MB/s .. 782.891226 MB/s]

Decompressed in 2.416509 ms. (=> 7274.202446 MB/s)
 [2.324000 ms .. 6.313600 ms | 2784.176762 MB/s .. 7563.760071 MB/s]

Congratulations Christoph, your 24bit RLE sets Pareto for Decompression, on both beauties.

    13766558    53.0                           176.61    4262.34   oodle 111               Overwatch-Cast-4K-Wallpaper.bmp
    13858734    53.3                           874.56    3298.32   lzturbo 10              Overwatch-Cast-4K-Wallpaper.bmp
    14662906 zstd -22                         1440       3344      ! outside TurboBench !  Overwatch-Cast-4K-Wallpaper.bmp
    14993816 rle8 Extreme with 24 Bit Symbols  836 MB/s  8228 MB/s ! outside TurboBench !  Overwatch-Cast-4K-Wallpaper.bmp
    15113396    58.2                           296.57    4101.56   lizard 11               Overwatch-Cast-4K-Wallpaper.bmp
    15598296 rle8 Extreme with 48 Bit Symbols 1068 MB/s  8435 MB/s ! outside TurboBench !  Overwatch-Cast-4K-Wallpaper.bmp
    16056915    61.8                           310.37    7745.89   trle                    Overwatch-Cast-4K-Wallpaper.bmp
    16126053 rle8 Extreme with 8 Bit Symbols   507 MB/s  8120 MB/s ! outside TurboBench !  Overwatch-Cast-4K-Wallpaper.bmp

    18007457    97.7                           217.30    7323.03   oodle 111               The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18018450 zstd -22                         1787       5426      ! outside TurboBench !  The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18130354 rle8 Extreme with 24 Bit Symbols  735 MB/s  7516 MB/s ! outside TurboBench !  The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18267592 rle8 Extreme with 48 Bit Symbols  782 MB/s  7563 MB/s ! outside TurboBench !  The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18413460    99.9                           197.58    8116.27   trle                    The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp
    18418537 rle8 Extreme with 8 Bit Symbols   446 MB/s  7307 MB/s ! outside TurboBench !  The_Undead_Lady_Sylvanas_Windrunner_(The_Banshee_Queen)_Warchief_of_the_Horde_3840x1600.bmp

Wot! 3x faster compression and 2x faster decompression than Lizard 11, CRAAAZYY!

Regarding the fluctuating speed rates, allow me to suggest start using the line that made Nakamichi's speed stable:

#ifdef _N_HIGH_PRIORITY
// https://habrahabr.ru/post/113682/
// Andrew Aksyonoff [
SetProcessAffinityMask(GetCurrentProcess(), 1);
	//volatile int zomg = 1;
	//for ( int i=1; i<1000000000; i   )
	//	zomg *= i;
// Andrew Aksyonoff ]
#endif

Above timings were gotten with Administrator rights. Didn't look up the source, have you entered HIGHEST PRIORITY?
Surely, it should stabilize the output "digits", as of now, ABS(8045-8228) =~ 200MB/s is kinda too much of a margin.

@rainerzufalldererste
Copy link
Owner

I’ve added a new benchmarking tool to rle8 in the previous release. That will start with a dry run which eliminates most of the fluctuations. Just use rle8.exe filename.bin without specifying a decoder to launch it.

If compiled for Windows the application runs in high priority mode and restricts execution to CPU core 0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants