Hey guys, 

I'm going to see about merging this in, sometime in the near future. It 
seems perfectly stable and functional, but it would be great to get some 
additional feedback if anyone can try it out.

-Ben



On Monday, June 6, 2016 at 9:40:53 PM UTC+9, Benjamin Moran wrote:
>
> Great!  This was a nice bit of work Leif did, so I'm glad it won't be 
> forgotten now. 
>
> On Monday, June 6, 2016 at 8:58:18 PM UTC+9, Rob wrote:
>>
>> I almost forgot about this. Added it to the roadmap of 1.3: 
>> https://bitbucket.org/pyglet/pyglet/wiki/Roadmap
>>
>> Rob
>>
>> On 6 June 2016 at 06:57, Benjamin Moran <[email protected]> wrote:
>>
>>> Sorry to bump up this thread after all of this time, but I was curious 
>>> if there were any issues with getting this merged. 
>>>
>>> On Monday, October 26, 2015 at 11:51:43 AM UTC+9, Leif Theden wrote:
>>>>
>>>> Great suggestion, Petr.  I made the changes that you suggested, and got 
>>>> a 8-10% speed increase for my synthetic benchmarks.  Salvakiya, I'm not 
>>>> sure why a heap based scheduler was used in the past.  Perhaps the benefit 
>>>> was never thought to be good enough to justify rewriting the existing 
>>>> scheduler.  This change that I'm proposing is just an incremental boost, 
>>>> not really one that is drastic.  A 40% increase in performance in the 
>>>> scheduler doesn't mean much if the scheduler is 10% of the overall CPU 
>>>> use.  Anyway, I'll need to do more benchmarks to see how it goes with 
>>>> real-world use.
>>>>
>>>> So... don't get your hopes up too much about fixing performance 
>>>> issues.  Pyglet's bottlenecks are still graphics related, and will take 
>>>> care to make a quick program.
>>>>
>>>> I've updated my branch.
>>>>
>>>> On Sunday, October 25, 2015 at 4:00:53 AM UTC-5, Petr Viktorin wrote:
>>>>>
>>>>> On Sat, Oct 24, 2015 at 11:39 PM, Leif Theden <[email protected]> 
>>>>> wrote: 
>>>>> > Greetings!  In response to a conversation in another thread, I've 
>>>>> put 
>>>>> > together some changes to the pyglet Clock that offer some 
>>>>> performance 
>>>>> > benefits between 25% - 80% during use based on my benchmarks.  This 
>>>>> clock 
>>>>> > doesn't change the API or behavior of the Clock and is a 'drop in 
>>>>> > replacement'. 
>>>>> > 
>>>>> [...] 
>>>>> > 
>>>>> > The only drawback from this heap clock is that 'soft scheduling' is 
>>>>> > impacted.  By my benchmarks, it typically executes at the same speed 
>>>>> or 
>>>>> > slower as the sorted-list Clock (the one in use now).  
>>>>> Soft-scheduling 
>>>>> > requires a sorted list of events to correctly find a free spot in 
>>>>> the 
>>>>> > schedule so that several events do not overlap and create usage 
>>>>> spikes, so 
>>>>> > the heap-clock has to create a sorted copy of the event queue.  
>>>>> Perhaps 
>>>>> > another mechanism for soft scheduling can be used, however, I have 
>>>>> not 
>>>>> > investigated alternative methods. 
>>>>>
>>>>> Hello, 
>>>>> I haven't studied the code in detail, but I'd like to point out that: 
>>>>> 1. Every sorted list is also a heap [0] 
>>>>> 2. Python's sorting algorithm is very good at lists that are "almost" 
>>>>> sorted (i.e. a few elements/subsequences out of place) [1] 
>>>>>
>>>>> So, for soft scheduling you might want to sort the list, insert the 
>>>>> event, and then leave the list sorted. This would make the next soft 
>>>>> schedule faster, as long as intervening heapq operations don't shuffle 
>>>>> the list *completely*. 
>>>>>
>>>>> I think it'd be worth exploring but haven't tested/benchmarked it 
>>>>> myself. 
>>>>>
>>>>>
>>>>> [0] https://docs.python.org/3/library/heapq.html : "heap.sort() 
>>>>> maintains the heap invariant!" 
>>>>> [1] https://hg.python.org/cpython/file/3.5/Objects/listsort.txt : 
>>>>> "3sort", "%sort" 
>>>>>
>>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "pyglet-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/pyglet-users.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to