Connect The Dots: iPhone Graphics, OS X, LLVM, ARM, and Ruby?
- From: "Leen Toelen" <toelen gmail com>
- To: performance-list gnome org
- Subject: Connect The Dots: iPhone Graphics, OS X, LLVM, ARM, and Ruby?
- Date: Fri, 2 Feb 2007 12:49:52 +0100
Hi,
I just found this at
http://www.satine.org/archives/2007/02/01/connect-the-dots-iphone-graphics-os-x-llvm-arm-and-ruby/
Interesting read about the performance of Mac OS X.
I'd
like to connect the dots between Apple's iPhone Graphics, OS X, LLVM
and the ARM architecture, and what it means for compilers,
interpreters, high-performance embedded software systems, specifically
in graphics and bytecode engines.
We'll start with what the heck LLVM does, and go from there.
- LLVM is a fascinating compiler
system that optimizes code at many stages, from compile-time to
run-time optimizations; e.g., your code is optimized while it's still
running!
- Apple uses LLVM to optimize OS X's OpenGL pipeline to emulate older video hardware features and accelerate modern hardware.
- Apple is integrating LLVM with GCC and supporting OS X's executable file format. Chris Lattner posted about it here.
- Apple has also contributed
ARM backend enhancements to LLVM that would allow a ARM version for portions of a OpenGL graphics pipeline, and subsequently, Core Animation.
It means that any type of performance critical code that's
"interpreted" or "pipelined", like OpenGL pipelines and _javascript_
engines, can be effectively JITed automatically through run-time
optimizations via LLVM.
Let's see: Simple _javascript_ engine, with automatic JIT compiler vs. manually coded JIT VM and compiler… hmmm….
This also has interesting implications for high-level languages like Ruby. Could a LLVM-Ruby provide the performance of
YARV without the complexity of a manual JIT compiler and VM? I know that Python's looking at it…
Plus you'd get a JIT embedded ARM mobile processor port of Ruby for
nearly free. And if that's true for Ruby… why not for all the important
bits of OS X?
Ahh, so that's how iPhone runs Mac OS X …
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]