EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2014
12:55 PM
Relative performance of different player models
It has been almost 6 years since the first version of Roku player came into existence. There have been changes to the platform, the most significant being switching from MIPS to ARM architecture mid-2011 and a lesser one the change to dual-core ARM (+MHz boost) in Roku3. I could not find discussion on relative performance between different models though. I saw Gandk-Geoff did benchmarks on different BRS features.
I was going over SimpleAnimateSprite code example and since it uses no-wait roMessagePort.GetMessage(), the while gets way loopy while waiting for the time span. Out of curiousity i thought to add a counter and print it every time period (default 1sec) to see how many times it spins between re-draws - and i get about 242,000 loops/sec on Roku3 (5.3.4016). Wow, that's fast. I mean for a BASIC it is, about 4 microseconds per bogo-loop (i figure since that's a bogus benchmark, i will call them bogo-loops to avoid confusion with proper scientific study and animal testing). And so i went running the same on 1st generation (<2200, as exemplified by Roku XD 3.1.1182) and on 2nd generation (3xxx, representative Roku2 XS 5.4.230) players.
1st gen (MIPS, <2200) = ~15.5k bogoloops/s (or ~64 microseconds/bogoloop)
2nd gen (ARM, 3xxx) = ~68k bogoloops/s (~15 usec/bl)
3rd gen (Roku3, 4xxx) = ~242k bogoloops/s (~4 usec/bl)
Mind you the choice of test was arbitrary yet exercises core routines of brightscript (function calls, comparisons, assignments, message fetch and arithmetic). The effect of animation routine is negligible (~2% on the slowest player, easy to check by commenting out redrawing calls) since it happens only once a second.
So speaking back-of-the-napkin calculations and ballpark results, i think we can say BRS code in 2nd generation of players is 4 times faster than 1st and Roku3 is 4x more faster than that. Or: each generation is faster than the previous one by a factor of 4.
Developers, any other observations/bogo-benchmarks?
PS. Update courtesy of @TheEndless:
Roku HD (2500) = ~58k bl/s (~17 µsec/bl)
new Roku 2 (2720) = ~78k bl/s (~13 µsec/bl)
I was going over SimpleAnimateSprite code example and since it uses no-wait roMessagePort.GetMessage(), the while gets way loopy while waiting for the time span. Out of curiousity i thought to add a counter and print it every time period (default 1sec) to see how many times it spins between re-draws - and i get about 242,000 loops/sec on Roku3 (5.3.4016). Wow, that's fast. I mean for a BASIC it is, about 4 microseconds per bogo-loop (i figure since that's a bogus benchmark, i will call them bogo-loops to avoid confusion with proper scientific study and animal testing). And so i went running the same on 1st generation (<2200, as exemplified by Roku XD 3.1.1182) and on 2nd generation (3xxx, representative Roku2 XS 5.4.230) players.
1st gen (MIPS, <2200) = ~15.5k bogoloops/s (or ~64 microseconds/bogoloop)
2nd gen (ARM, 3xxx) = ~68k bogoloops/s (~15 usec/bl)
3rd gen (Roku3, 4xxx) = ~242k bogoloops/s (~4 usec/bl)
Mind you the choice of test was arbitrary yet exercises core routines of brightscript (function calls, comparisons, assignments, message fetch and arithmetic). The effect of animation routine is negligible (~2% on the slowest player, easy to check by commenting out redrawing calls) since it happens only once a second.
So speaking back-of-the-napkin calculations and ballpark results, i think we can say BRS code in 2nd generation of players is 4 times faster than 1st and Roku3 is 4x more faster than that. Or: each generation is faster than the previous one by a factor of 4.
Developers, any other observations/bogo-benchmarks?
PS. Update courtesy of @TheEndless:
Roku HD (2500) = ~58k bl/s (~17 µsec/bl)
new Roku 2 (2720) = ~78k bl/s (~13 µsec/bl)
5 REPLIES 5

TheEndless
Channel Surfer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2014
01:16 PM
Re: Relative performance of different player models
"EnTerr" wrote:
So speaking back-of-the-napkin calculations and ballpark results, i think we can say BRS code in 2nd generation of players is 4 times faster than 1st and Roku3 is 4x more faster than that. Or: each generation is faster than the previous one by a factor of 4.
Need to pull the new Roku 1 and Roku 2 in there, since they're technically a different generation than the Roku 3. If you don't have one, shoot me a PM with a link to your test and I can run it on a Roku 2 to see what kind of results we get. I have a sneaky suspicion they might actually be a little slower than your 2nd gen result.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2014
03:32 PM
Re: Relative performance of different player models
With the updated stats seems we have all processors (per wikipedia listing) covered and that models fall in three distinct groups, with performance growing by factor of 4 with each level:
The grouping should hardly be a surprise. Barely worth mentioning, the new BCM7218 lineup (2013 LT, Roku 1, Roku 2) is a hair faster than BCM2835-based 2011 "classic Roku 2" - and the 2012 "Roku LT" and "Roku HD" with BCM7208 are a hair slower. Where a "hair" is <15%, so never mind.
- mod# < 2200 (PNX8935)
- 2300 < mod# < 4000 (BCM2835/BCM7208/BCM7218)
- mod# > 4000 (BCM11130)
The grouping should hardly be a surprise. Barely worth mentioning, the new BCM7218 lineup (2013 LT, Roku 1, Roku 2) is a hair faster than BCM2835-based 2011 "classic Roku 2" - and the 2012 "Roku LT" and "Roku HD" with BCM7208 are a hair slower. Where a "hair" is <15%, so never mind.
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-02-2014
05:22 PM
Re: Relative performance of different player models
Today I ran some loops on Roku HDMI Stick - and while i don't know for sure the exact CPU inside - it seems to behave just like any other 3xxx model. From BrS developer's point of view, i expect model 3500 "Sugarland" to act in line with the Roku 2 HD/XD/XS base.
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-03-2016
02:25 AM
Re: Relative performance of different player models
Update two years later:
New HDMI Stick (ARM, #3600) = 176k bogoloops/s (~6us/bl)
See also in this thread:
TLDNR: The new stick performs somewhere in between Roku 3 and Roku 2XS for "classic" code.
New HDMI Stick (ARM, #3600) = 176k bogoloops/s (~6us/bl)
See also in this thread:
"Re wrote:
Let me share my experience as a software developer who has tested his code (a single-thread...
TLDNR: The new stick performs somewhere in between Roku 3 and Roku 2XS for "classic" code.

Komag
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-03-2016
04:19 AM
Re: Relative performance of different player models
That's very helpful to know, thanks 8-)