![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/share/emscripten/tests/zlib/ |
Upload File : |
#include "zlib.h" #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> // don't inline, to be friendly to js engine osr void __attribute__ ((noinline)) doit(char *buffer, int size, int i) { static char *buffer2 = NULL; static char *buffer3 = NULL; unsigned long maxCompressedSize = compressBound(size); if (!buffer2) buffer2 = (char*)malloc(maxCompressedSize); if (!buffer3) buffer3 = (char*)malloc(size); unsigned long compressedSize = maxCompressedSize; compress(buffer2, &compressedSize, buffer, size); if (i == 0) printf("sizes: %d,%d\n", size, compressedSize); unsigned long decompressedSize = size; uncompress(buffer3, &decompressedSize, buffer2, compressedSize); assert(decompressedSize == size); if (i == 0) assert(strcmp(buffer, buffer3) == 0); } int main(int argc, char **argv) { int size, iters; int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; case 1: size = 100000; iters = 60; break; case 2: size = 100000; iters = 250; break; case 3: size = 100000; iters = 500; break; case 4: size = 100000; iters = 5*500; break; case 5: size = 100000; iters = 10*500; break; default: printf("error: %d\\n", arg); return -1; } char *buffer = malloc(size); int i = 0; int run = 0; char runChar = 17; while (i < size) { if (run > 0) { run--; } else { if ((i & 7) == 0) { runChar = i & 7; run = i & 31; } else { runChar = (i*i) % 6714; } } buffer[i] = runChar; i++; } for (i = 0; i < iters; i++) { doit(buffer, size, i); } printf("ok.\n"); return 0; }