Skip to content

Why Symbian is so slow compared to Linux

Symbian phones are really slow compared to Linux based devices like gp2x etc. You really don’t get even near to the same performance (in frames per second) with Symbian phone compared to an open Linux device with similar ARM processor.
Here’s couple of reason’s affecting my emulator ports.
1. No direct access to the frame buffer
Symbian doesn’t provide direct access to the frame buffer. The CDirectScreenAccess API is far from direct. All data goes through window server, so there’s cycles consumed in the sceduling (few context changes etc) and in the memcopy operations made by the Window Server. I’m assuming that the Window Server makes a transformation of the data passed to it via CDirectScreenAccess. This all makes the basic blit operation really slow in Symbian.
I’m hoping that the Qt will provide faster access to the the frame buffer, which could provide significant speed increase to my emulators.
2. Memory mapping and dynarec
The memory mapping affects only gpsp-emulator, but it affects to it heavily. I have to use the memory trampoline pattern to get the dynamic recompilation working in Symbian. This affects all the dynarec emulators a lot. I’m quite sure that psx4symbian would be possible with OMAP3 based devices, if Symbian memory mapping could be modified.
I don’t think that Symbian is going to change their memory mapping just to get dynarec emulator to run faster. However I’m quite sure that this also slows down all self-modifiyingcode which is being run in the Symbian OS, so there might be a little hope. At least I could add an idea about modifying the memory mapping into the Symbian Foundation’s idea database.


  1. PAul Todd says:

    Have you considered using the RGA ( or OpenGL ES to see if that speeds things up?

  2. khan4251 says:

    Did n-gage 2.0 using rga?
    Did you make opengl es support for gpsp to see how much frames it speed up?

    • Summeli says:

      Yes, the n-gage 2.0 is using rga. For me the RGA seems to be just a wrapper on top of the standard symbian stuff like CDirectScreenAccess for example.
      I did opengl es support for AntSnes to see, that it’s provides only minor speed increase. And I don’t think it worth of the effort, since most of the phones don’t have the hardware support for opengl es.

  3. cansual says:

    nice to hear that summeli I hope you can do something to increase the speed.
    And thanks for the information I can’t wait to get a n900, it’s so fast I hope you will release antsnes for it

  4. xRudeRado says:

    so psx would be only for omap3 based deviced(if memory mapping was enabled) i saw windows mobile non hw accelerated phones running psx games at decent speed ex:i900
    i might be wrong so please tell me if it’d be availble for those 600Mhz arm11 too?

  5. Fenrir says:

    Hey Summeli, just wondering, does this post means that you will consider getting an N900 and developing for Maemo 5?
    I, for one, sure hope so! 😉
    And thanks for the great apps man, keep up the good work – but always on your own pace.

  6. lpratas says:

    I make the same question of the xRudeRado, if a psx emulator runs smoothly on Omnia i900 what is a ARM9 Xcale processor at 624MHz and with no graphic acceleration why not for the new ARM11 600MHz Cpu of the recents models?

  7. StarliteShadow says:

    What are full-screen blits like? And is it quicker to do all work off-screen and a single full-screen copy ?
    Years ago when EPOC first came out and the Symbian OS was on the Psion Series 5, there was a wonderful little language called OPL – in which it was very slow to write anything to a window – so I drew to a bitmap in memory and then Copied it to the window – which, counter-intuitively was far (and i mean Much) faster, i was wondering if anything similar is still doable albeit in a different way?

Leave a Reply