[Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: |
undisclosed-recipients: ; |
Subject: |
[Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code |
From: |
"Jason Short" <jdorje@xxxxxxxxxxxxxxxxxxxxx> |
Date: |
Sat, 21 Aug 2004 08:48:16 -0700 |
Reply-to: |
rt@xxxxxxxxxxx |
<URL: http://rt.freeciv.org/Ticket/Display.html?id=9755 >
Per I. Mathisen wrote:
> <URL: http://rt.freeciv.org/Ticket/Display.html?id=9755 >
>
> On Fri, 20 Aug 2004, Jason Short wrote:
>
>>This patch provides a function distribute() in the utility code:
>>
>> void distribute(int number, int groups, int *ratios, int *result);
>>
>>This will distribute "number" elements into "groups" groups with ratios
>>given by the elements in "ratios".The resulting division is put into
>>the "result" array.
>>
>>The only user (so far) is the trade disribution code.
>
>
> Check speed. This code is run very often. Consider doing away with your
> asserts and possibly making it inline.
In a single autogame:
Old code:
real 1m20.911s
user 1m12.334s
sys 0m0.489s
New code:
real 1m18.001s
user 1m12.145s
sys 0m0.332s
I'm not sure I believe the new algorithm is faster. But I don't see any
reason why it would be slower.
-----
And another one:
Old code:
real 1m38.259s
user 1m24.959s
sys 0m0.770s
New code:
real 1m32.612s
user 1m24.200s
sys 0m0.437s
So maybe it is faster. But I have no idea why. (Savegames were
unchanged by the patch in both these autogames.)
-----
Oh wait, I know why. It's because the original code had a very
inefficient loop. It checked every condition in each loop, even though
finding one condition usually meant the loop had to be restarted or was
complete.
jason
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Per I. Mathisen, 2004/08/21
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code,
Jason Short <=
- [Freeciv-Dev] (PR#9755) provide distribute() in the utility code, Mateusz Stefek, 2004/08/23
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Jason Short, 2004/08/23
- [Freeciv-Dev] (PR#9755) provide distribute() in the utility code, Mateusz Stefek, 2004/08/25
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Jason Short, 2004/08/25
- [Freeciv-Dev] (PR#9755) provide distribute() in the utility code, Mateusz Stefek, 2004/08/26
- [Freeciv-Dev] (PR#9755) provide distribute() in the utility code, Mateusz Stefek, 2004/08/26
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Jason Short, 2004/08/26
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Jason Short, 2004/08/26
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Mateusz Stefek, 2004/08/26
- [Freeciv-Dev] Re: (PR#9755) provide distribute() in the utility code, Jason Short, 2004/08/26
|
|