Hi,
I see that the sort_u8() func into schrofilter.c use a basic bubble
sort scheme
=> is it volontary ?
I have make a benchmark between this sort_u8() routine and the standard
qsort() C func and found that the qsort() routine have betters
performances whis big data arrays but lowers performances when it is
used very frequently with very littles arrays to sort
On another side, I have implemented a bubblesort2() func that is
relatively similar to sort_u8() but that seem more performant than
qsort() and sort_u8() when it is very frequently used with a data array
on the range of 32 to 1024 bytes
=> what is the more usual /more frequently array data range that is used
with the sort_u8() func ?
If the data size to sort is lesser than 32, the sort_8() func is
generally the fastest
If the date size to sort is more than 1024, the qsort() func is
generally the fastet
And between this two extremes, my bubblesort2() routine seem generally
outperform the last twos :)
Here is the new function :
static void sort_u8_ext(uint8_t * d, int n, int firsts)
{
int i, j, k;
int x;
int lower, upper, toswap;
int swapped = 0;
if ( (n < 2) || ( firsts < 1) )
return;
if ( firsts >= n )
{
firsts = n -1 ;
}
for (i = 0; i < firsts ; i++)
{
toswap = 0;
lower = d[i];
for( j = i+1; j < n ; j++)
{
if (d[j] < lower )
{
toswap = j;
lower = d[j];
}
}
if ( toswap )
{
x = d[i];
d[i] = d[toswap];
d[toswap] = x;
}
}
for (i = n -1 ; i >= (n - firsts) ; i--)
{
toswap = 0;
upper = d[i];
for( j = i-1 ; j >= firsts ; j--)
{
if (d[j] > upper )
{
toswap = j;
upper = d[j];
}
}
if ( toswap )
{
x = d[i];
d[i] = d[toswap];
d[toswap] = x;
}
}
}
We can set the number of values that we only want to sort at the
beginning and at the end, using the "firsts" variable
(in this case, only the middle of the array isn't sorted, but maximums
and minimums values are automatically sorted first by this func)
Note that the variable "firsts" can too be automatically set to n/2
outside this func for to force this routine to reorder entirely the
array to sort
(and not only the firsts lessers and greaters values of the array)
@+
Yannoo
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Schrodinger-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/schrodinger-devel