- 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
NotificationsYou must be signed in to change notification settings
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.