- Notifications
You must be signed in to change notification settings - Fork0
Reimplementation of qsort function from glibc with more ability to inline comparison function.
License
DieTime/qqsort
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Theqqsort
macro is a reimplementation ofqsort function from glibc with more ability to inline comparison function.
#include<stdio.h>#include"qqsort.h"intmain(void) {intarray[]= {4,3,2,1,0,5,6,7,8,9};intsize=sizeof(array) /sizeof(array[0]);qqsort(array,size,sizeof(int),qqsortcmp(int*a,int*b) {qqsortret(*a-*b); });for (intidx=0;idx<size;idx++) {printf("%d ",array[idx]); }return0;}
❗This project is just an experiment to study the influence of inlining on code performance.
Machine used for benchmark:
- AMD Ryzen 7 5800x
- 16GB RAM
- Linux 6.2.0
For the benchmark, a simple C++program was implemented to sort an array of structures in three ways:
- Sorting using
stl
- Sorting using the
qsort
function of the library - Sorting with the
qqsort
macro
Three compilers were used to build the benchmark:
g++ 11.4.0
clang++ 14.0.0
msvc 19.37
The following compilation flags were used:
COMPILE_ARGS= ["-flto","-O2", ... ]
Theqqsort
macro showed positive results in performance only when using theg++
andmsvc
compilers. When usingclang++
, theqqsort
macro performs worse than theqsort
function.
About
Reimplementation of qsort function from glibc with more ability to inline comparison function.
Resources
License
Uh oh!
There was an error while loading.Please reload this page.