Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Borland Delphi > Re: Skybuck pre...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 5 of 76 Topic 3707 of 3940
Post > Topic >>

Re: Skybuck presents alternative division method, to be benchmarked ;)

by "Skybuck Flying" <BloodyShame@[EMAIL PROTECTED] > Apr 24, 2008 at 04:29 PM

Ok,

This one slightly faster.

However the leading zero count assembler function can't be inlined so this

means calling overhead is added.

To bad ;)

Still it's slightly faster than the previous general function.

I am just too lazy to write a pascal version which searches for the first 
bit set.

I am gonna try that next... lol me so lazy :)

// not sure if this assembler version will always work if compiler changes
// but so far it seems to work ok ;) :)
// to bad it can't be inlined... maybe try that later.
function LeadingZeroCount( const Value : longword ) : longword;
asm
 push ebx
 bsr ebx,eax
 mov eax,32
 jz @[EMAIL PROTECTED]
  sub eax,ebx
  dec eax
 @[EMAIL PROTECTED]
 pop ebx
end;

// general version just out of curiosity...
function SimulatedDivGeneralV2( Content : longword; Divisor : longword ) :

longword; inline;
var
 vLeadingZeroCount : byte;
 v****fter : byte;
 vDivisions : longword;
 vBiggerDivisor : longword;
 vAnder : longword;
 vDivisorDifference : longword;
begin
 result := 0;  // latency 1

 // replacement
 vLeadingZeroCount := LeadingZeroCount( Divisor );
 v****fter := 32 - vLeadingZeroCount;
 vBiggerDivisor := 1 shl v****fter;
 vAnder := $FFFFFFFF shr vLeadingZeroCount;

 vDivisorDifference := vBiggerDivisor - Divisor;

 // main algorithm
 while Content > vBiggerDivisor do // latency 1 + latency 1 = latency 2
 begin
  vDivisions := (Content shr v****fter); // latency 1 + latency 1 = latency
2
  Content := (Content and vAnder) + vDivisions * vDivisorDifference; // 
latency 1 + latency 1 = latency 2
  result := result + vDivisions; // latency 1
 end;

 // single loop latency: 2 + 2 + 2 + 1 = 7
 if Content >= Divisor then // latency 1 + latency 1 = latency 2
 begin
  result := result + 1; // latency 1
 end;

 // best case latency: 1 + 7 + 3 = 11
 // worst case latency (max loops 11 for 32 bit longwords): 1 + 7 * 11 + 3
= 
81

 // very close to div 7, though this routine is probably directpath mostly

and not vector path
 // so maybe it's faster... but then again still some calling overhead.. 
let's see what happens
 // when it's inlined ;)
 // yup inlining works real nice.

 // time for a benchmark :)

 // tested on amd x2 3800+
 // for content values ranging from say 1000 to even a million this
routine 
appears
 // to be faster than the div... kinda nice.

 // general routine is slower... didn't bother to optimize it or so ;)
end;

Bye,
  Skybuck.
 




 76 Posts in Topic:
Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-23 13:52:52 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-23 15:09:13 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:01:10 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:13:18 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:29:27 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:38:18 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:51:19 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:09:28 
Re: Skybuck presents alternative division method, to be benchmar
Locke <jlocke@[EMAIL P  2008-04-24 16:09:04 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:27:06 
Re: Skybuck presents alternative division method, to be benchmar
Locke <jlocke@[EMAIL P  2008-04-24 16:34:45 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:49:19 
Re: Skybuck presents alternative division method, to be benchmar
Zathras <webnewsgroup@  2008-04-24 17:30:08 
Re: Skybuck presents alternative division method, to be benchmar
spam2you <spam2you@[EM  2008-05-29 22:13:09 
Re: Skybuck presents alternative division method, to be benchmar
"Fritz Franz" &  2008-05-29 22:43:38 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:14:38 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:20:14 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:26:48 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-23 16:12:07 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-23 19:27:30 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-23 18:31:32 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 04:27:50 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 15:58:03 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 17:19:29 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 16:26:15 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 17:47:58 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 16:56:04 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:07:57 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 17:13:12 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:24:40 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:32:42 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:38:19 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:45:22 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:46:58 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:50:34 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 18:42:15 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 19:51:14 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 18:46:57 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-24 21:00:06 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 08:14:52 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 10:06:43 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 10:23:26 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-25 12:48:07 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 13:06:28 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-26 13:16:38 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 17:53:54 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-26 17:21:05 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 09:19:40 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-25 12:56:12 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 09:13:05 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 18:45:37 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:33:57 
Re: Skybuck presents Faster Div 7
Robert Redelmeier <red  2008-04-24 15:41:25 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 17:58:48 
Re: Skybuck presents Faster Div 7
Chuck Crayne <ccrayne@  2008-04-23 20:59:04 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 06:54:54 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-24 11:45:40 
Re: Skybuck presents Faster Div 7
Robert Redelmeier <red  2008-04-24 12:23:15 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-24 20:53:17 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 08:17:20 
Re: Skybuck presents Faster Div 7
Robert Redelmeier <red  2008-04-25 13:38:45 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-25 22:40:49 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 09:11:45 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-26 12:58:17 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 17:48:37 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-27 07:43:48 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-27 09:50:19 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-27 22:01:40 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-27 22:51:40 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-28 17:03:57 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-28 17:22:36 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-05-02 06:59:08 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-27 10:13:24 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 14:43:09 
Re: Skybuck presents BitLength
"Skybuck Flying"  2008-04-26 07:00:39 
Re: Skybuck presents BitLength
"Skybuck Flying"  2008-04-26 07:13:22 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Mon Oct 6 15:54:10 CDT 2008.