Why Android Emulator is Way Slower than iPhone Simulator? [closed] - android

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
Just Curious. Did Apple do an awesome job with their iPhone simulator?
When Compared,The android Emulator running on i7 and iPhone simulator on i3. The iPhone simulator is faster than the real iPhone.
Did I fail to set things up right?

It's a matter of architectural decisions:
iOS simulator runs native code, directly on your CPU - the project has to be recompiled for x86 architecture to be used with simulator. The simulator itself simply emulates all the iOS APIs.
Android emulator, on the other hand, uses QEMU to run ARM (or x86, but ARM is more popular) CPU virtual machine, with all the software stack on top of it - Linux kernel, Android system image, etc. Think of it as an emulated hardware.
It's a sort of trade off - the way iOS does it is much faster, but it is harder to make it 100% compatible with the target system. For Apple it was perhaps a bit simpler, as iOS and Mac OS have many things in common.
For Android it makes a lot of sense to emulate the whole stack - it is easier to build cross-platform SDK, easier to test some system level components with it, etc. It's simply a different ecosystem, with different goals. Don't forget, that Android emulator can be used e.g. to test native ARM libraries compiled with Android NDK.
Today the Android emulator performance is more or less acceptable, but it was just a disaster in the early Android days. That said, personally I think that fast, API-level native simulator for Android would be a great addition to the SDK, making it possible to test less demanding projects much faster.
Interesting reading: http://logic-explained.blogspot.com/2011/09/why-is-there-no-x86-native-emulator-for.html

iphone ,iphone simulator,apple laptop ,xcode are apple products
but android
windows-Microsoft
android -Google
eclipse -eclipse vendor
these tools are different vendors that why android simulator slow.
i am just kidding :)

Apple Simulator is created using system configuration means it will take the System's ram, memory,cache automatically you don't have to configure it, so an Iphone Simulator is not act as real device but in case of Android one has to provide all the configuration details before creating the emulator,Android emulator to a great extent will act as real device but can be much slower than an Iphone Simulator.

Yes that's true, The emulator (FYI) is slower then simulator.
Does apple did an awesome job with the iPhone simulator?
No other developer can answer this because iOS is not open-source.
Did I fail to set things up right?
No, you are right at everything.

First of all Android does not have a Simulator it has an Emulator.
Secondly I believe the speed of the Emulator depends on your machine config. Better the config the better it will run provided you have created the AVD properly and given it ample memory.

That's simple:
Android Emulates real device, so real architeture and really close behaivour and layout.
In other hands apple simulator is not an emulator, so you can't expect real behaviour, but it has a close layout, which mainly solves for IOS, as you needs only 1 device to test the app behaviour.

Android SDK has an emulator, Whereas ios SDK has simulator.
A simulator behaves similar to something else, but is implemented in an entirely different way. It provides the basic behavior of a system but may not necessarily abide by all of the rules of the system being simulated. It is there to give you an idea about how something works. It uses Desktop resources like processor, ram etc.,
An emulator is a system that behaves exactly like something else, and abides by all of the rules of the system being emulated. It is effectively a complete replication of another system, right down to being binary compatible with the emulated system's inputs and outputs, but operating in a different environment to the environment of the original emulated system.
Thus simulator will be definitely fast compared to emulator.

The Android simulator is actually an emulator, designed to mimic a mobile device running Android, meaning it emulates the hardware running Android OS, to make it as close to 100% identical as possible. The JVM converts Java bytecode into ARM instructions that are decoded by the emulator.
The iOS simulator works at a higher level, simulating the operating system and its libraries, translating OS calls into OS X implementations and simulating events in the other direction like device rotation or low memory conditions. When you run an app on the iOS simulator, the app is compiled into x86 that runs natively on your Mac. Unlike the Android emulator, your iOS app won't run out of memory in the simulator because it's not constrained to any particular iOS device's memory limitations.

Related

How to predict performance of a program for smartphones developed on a pc

I am developing a program that is going to be very performance-intense for Android/smartphones. Because I do this on a pc (Windows) I do not really know how my application will perform on a mobile device. I do not want to port this program to android until I have a good working version for Windows (this will be my first Android-app and I don't want to try to troubleshoot something when I'm not even sure whether my program is working).
I am searching for some database where I can compare pc-GPUs with mobile GPUs. I know that an accurate comparison is difficult between such different architectures, however, a small hint about the expected performance would be very helpful.
By the way, I am developing on a machine with an integrated Intel® HD Graphics 4400 and ideally, I want to compare it to something like an Adreno 306.
Rather than using benchmarks for the GPU, look at existing cross-platform applications with similar performance and see how it compares. Install it on your computer to make sure the intensiveness is similar (using whatever benchmarks you want), then install it on your android device to see if it can keep up to your expectations. You can find benchmarking apps or you can use the profilers on Android Studio to see how the device in question is handling the application.
This is about as good as you're going to get. Like you said, so much relies on the implementation and the vastly different architecture. Lastly, if you're building on a framework that builds to other platforms (libgdx, xamarin, etc), you should present a specific question to other users of that framework.

Android emulator running on VirtualBox vs. real device

I've developed an Android application and I'm running it on a android virtual machine in order to get a faster execution of my application, but how can I compare the virtual emulator performances to those of a real device?
Thanks
This answer may not be what your looking for. I dont think you can compare performance between an emulator and any real device. Firstly because your software isnt running on the target hardware. The emulator may be doing all sorts of additional things to make it look like that hardware. there will be layers of software running your software generally making your programme run slow.
The best thing you could do is do some performance profiling https://stackoverflow.com/questions/2713940/eclipse-java-profiler which would show you where bottle necks are and give you some idea of performance.
There's no real substitute for running on the target hardware. emulation will show you your software is functionally working but it may hide timing bugs it you have time critical code.
the virtualbox is just an emulater. it wont carry out the application's full preformance, as it has to go through multiple layers of software. for testing out apps, a real android device is necassesary.

Is there any difference between emulator and simulators?

I am just bit confused with two different things as we have emulators in android and simulators in blackberry. Is there any difference between a simulator and an emulator or are they just different names for the same thing?
Emulator is combination of hardware and software.
Simulator is only software.
Consider example of android emulator, when any action is done on android emulator, the instruction is get converted into ARM call and then to the underlying operating system(windows/mac/unix).
In case of iPhone simulator instructions on simulator are directly converted to the native call(Mac).
That's why emulator provides more realistic behavior.
See both the names are same for the "Virtual kind of Devices".
Its Emulator for Android, Simulator for BlackBerry, again Simulator for iPhone as well.
What is Virtual Device?
Virtual device means which is not a real phone(but almost giving the same functionality as real phone does except some features like camera) but developer can use it to test their application).
In the given context they both would refer to the same thing. However this is worth a read http://en.wikipedia.org/wiki/Emulator#Emulation_versus_simulation.
From RIM's own website:
There are a variety of BlackBerry® simulators available to emulate the functionality of actual BlackBerry products, including BlackBerry devices and BlackBerry Enterprise Server™.
In other words, yes, simulators are just a RIM term for emulators.
A simulator is mostly used to theoretically examine a system. Whereas an emulator clones the original system in some aspects.
Emulator : emulates Hardware and Software
Simulator: simulates only software
Check the following link :
http://www.mobileqazone.com/forum/topics/difference-emulator-and?xg_source=activity
Whereas I am concerned about these :
Emulator : When you have the hardware capability and do not need to translate each instruction. in other words instructions are supported by hardware.
Simulator : when instructions are not supported and you need to translate them with the native language.
Emulator are supposed to be faster than simulator, since no instruction translation is needed .

Is it possible to run R from a tablet using Honeycomb (Android 3.0)?

I have a Xoom tablet and it would be great if I could run statistical analysis using R on it. As far as I know it is not possible to use R on iPad due to license problems (GPl x iTunes etc.) and a lack of compiler for Fortran in the Apple tablet.
But what about tablets using android? Arguably, the GPL issue is not a problem, so any help here on how to use R on my tablet?
I used Linux Installer from http://android.galoula.com/en/LinuxInstall/ (my Dezire Z was rooted beforehand), installed stable debian and R! on this Linux install. I`m not a Linux-geek and total time for installation (first time loop file size was insufficient, and I repeated the whole process) wass less than hour however.
(source: gyazo.com)
At some point, smartphones and tablets will have browsers capable enough to run RStudio in its server mode via the browser. Currently, the latter demands too much in terms of newer GWT, Javascricpt, ... magic that it remains limited to (recent enough) desktop browsers; see here for a bit more on this.
You can always ssh out though. Connectbot is a capable ssh client for Android, and of course free. No graphs though.
The Android SDK offers developers the facility to program in Java, ... not C or Fortran, which are the languages in which R is written. Although some have said that hacking the Android tablets voids their warranty and prevents upgrades, Motorola only requires that the device be relocked before doing upgrades. For this question I think it still boils down to "if you have to ask the question, then you cannot do it".
EDIT: But somebody else will probably try it.
(I haven't found gcc for the Android.)

Wine like for Android

I am pondering the idea of a Wine-ish compatibility layer on Android.
The idea is to run Symbian apps on it as both OSes share ARM hardware.
I have no knowledge of Symbian but I think that given the hardware capabilities of Android devices this could be done with less effort than Wine's windows emulation.
What would be the most significant difference to overcome in this emulator? (threading, storage, ...)
The real problem is not going to be code execution, but the API's to do things like graphics, interact with hardware, accept input, etc. If you have documentation of the original and android has the capability, API translation layers would be possible.
But android's security model outright prevents a number of things that are possible on other phone platforms, and combined with it's "java apis only" allows only inefficient means of doing things that can be done more efficiently on others.
This is of course all about application-level emulation/api translation. If you are willing to modify the android platform itself, supporting just about anything else for which you have documentation (and licensing?) within the hardware capability of the device should be possible.
Hardware capabilities of a device have nothing to do with complexity of an emulator to be hosted. It depends on Symbian's design and complexity.
And, even more, licencing. Even if one could make a Symbian emulator for Android, its legality would be questioned.
It's difficult to answer your question in detail, but since Symbian is open sourced (and Android too), if you've got the time, it shouldn't be too hard to see what sets them apart.
QT is used for the latest symbian OS, and has been ported to Android, you could write apps in QT build for each platform
the problem for writing an emulatir are variouss.
If the Symbian apps are written in in an interpreter language like Basic or similar then an emulator couldn't be too difficult to write. I did such stuff once to make the same code run on linux and windows, and I used a translation API for all calles coming from the software directed to UI, input/output.
I wound guess that the UI capabilities of Symbian are a subset of the Android functions so it would be not too difficult to write a WINE alike thing or an interpreter that runs the Symbian code on different hardware - IF it is only in high language.
But be aware there could be some machine code in the appps and that is processor specific. Most of the Android tabs nowadays run on Tegra, Tegra2 or (soon) on Tegra3, some may run on StrongArm or Arm, some may run on Intel Atom (x86 architechture), so this might get more or less impossible if the CPU isn't binary compatible like ARM / ATOM. Then you need to emulate the CPU as well and that might eat so much performance that you need a 4-5 times stronger machine to run that stuff smoothly.
It won't be too difficult to crack Android to execute Linux-alike binaries, but for sure this "mod" will affect the ability to use or download stuff from regular appstores.
With some apps you might have even more headache, e.G. my MP3 player from Korea runs on Strongarm, but it also executes Flash games from various sources. When there is no Flash player - and Google announced something like dropping support for Adobe Flash - it won't be usable.
The "most wanted" is obviously the Ovi Maps, probably that stuff could be easily converted to another app having offline navigation capability :-) People wrote "Gaia" some years ago, an open source viewer for Google Earth (and later forced to give up) so it can't bee too difficult to realize at least this.

Categories

Resources