SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
Marc-Antoine Scheurer
2010
i5
Optimizing iOS applications
AgilitĂŠ iPhone Java Incubateur
8:15 Accueil des participantsAccueil des participantsAccueil des participantsAccueil des participants
8:40 Mot des organisateurs & CriĂŠe des orateursMot des organisateurs & CriĂŠe des orateursMot des organisateurs & CriĂŠe des orateursMot des organisateurs & CriĂŠe des orateurs
9:00 Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)
9:40
10:40
- A1 -
Le terrain Agile
Jean-Philippe Vigniel
- I1-
Hello iPhone
Stephane Tavera
- J1 -
NOSQL also means RDF stores: an
Android case study
Fabrizio Giudci
- X1 -
Le dĂŠveloppement durable
Dominic Williams
11:00
12:00
- A2 -
Integration of User Centered Design
in Agile Development of RIA
J. Borkenhagen, J. Desmazières
- I2 -
DĂŠveloppement d'une application
iPhone pilotĂŠe par les tests
Emmanuel Etasse, Van-Charles Tran
- J2 -
La Tequila du dĂŠveloppement Web
Nicolas Martignole
- X2 -
Cloud Computing: anatomie et
pratique
Marc-Elian BĂŠgin
12:20
13:20
- A3 -
Adoption de l'AgilitĂŠ par les usages
Xavier Warzee
- I3 -
Distribution d'applications iPhone
en Entreprise: RĂŠalisation d'un
AppStore interne
GĂŠraud de Laval
- J3 -
Vaadin - Rich Web Applications in
Server-side Java without Plug-ins or
JavaScript
Joonas Lehtinen
- X3 -
Les DVCS sont vos amis
SĂŠbastien Douche
Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes)
14h10 Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)
14h50
15h50
- A4 -
Scrum, introduction et mise en
oeuvre avec iceScrum
Claude Aubry
- I4 -
Agile iOS Development
JĂŠrĂ´me Layat, Alexander Osterwalder
- J4 -
JAX-RS and Java EE 6
Paul Sandoz
- X4 -
IT Design & Ergonomy
Pascal Petit, Aude Lussigny
16h10
17h10
- A5 -
AgilitĂŠ : 10 ans dĂŠjĂ 
Thierry Cros
- I5 -
Optimizing iOS applications
Marc-Antoine Scheurer
- J5 -
Ecrivez et automatisez vos tests
fonctionnels avec jBehave
Xavier Bourguignon
- X5 -
NoSQL : Enn de la biodiversitÊ
dans l'Êcosystème des BD
Olivier Mallassi
17h30
18h30
- A6 -
Lean engineering
Jean-Christophe Dubail
- I6 -
iPhone et Agile, l'amour vache
Guillaume Duquesnay
- J6 -
Let's make this test suite run faster
David Gageot
- X6 -
The feel of Scala
Mario Fusco
Mot de la n & tombolaMot de la n & tombolaMot de la n & tombolaMot de la n & tombola
Programme de la ConfĂŠrence
www.soft-shake.ch
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Optimizing iOS Applications
Marc-Antoine Scheurer
marco@sente.ch
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Optimizing is...
• Risky:“If it ain’t broke, don’t fix it”
• A hardware problem:“Buy a faster
computer”
• Time consuming:“I don’t have time for
performance work”
• Complicated:“I don’t know where to start
or what to do”
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Why?
• For the user: better experience
• For you: beat the competition
• For the OS: watch out the watchdog
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
A Hardware Problem:
Limited Resources
3G 3GS 4 iPad
CPU ARM 11 ARM Cortex A8 A4 (Cortex A8) A4 (Cortex A8)
clock 412 MHz 600 MHz 1 GHz 1GHz
L1 32 KB 64 KB 64 KB 64 KB
L2 - 256 KB 640 KB 640 KB
GPU
triangles /
s
PowerVR MBX Lite
0.6 M
PowerVR SGX
5.2 M
A4 (PowerVR SGX)
28 M ??
A4 (PowerVR SGX)
28 M ??
RAM 128 MB 256 MB 512 MB 256 MB
available 40 MB 150 MB 400 MB ? 150 MB
Flash
available
8 - 32 GB
2 GB
16 - 32 GB
2 GB
16 - 32 GB
2 GB
16 - 32 - 64 GB
2 GB
Screen 480x320 480x320 960x640 1024x728
More GPS Compass Gyroscope
Battery 6h on WiFi 9h on WiFi 10h on WiFi 10-12h video
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Where to start?
Measuring Performance
• Guessing often does not work
• Measure - Change - Measure
• Use measuring tools
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Measuring Tools
• NSLog
• Instruments
• Simulator
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
NSLog
NSDate *startTime = [NSDate date];
...
	 	
NSLog (@"Elapsed time: %.3f", -[startTime timeIntervalSinceNow]);
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Instruments
Tool Introduced
Objective C 1988
Interface Builder 1988*
Xcode 1988†
Instruments 2007‡
† Project Builder, renamed Xcode in 2003
‡ Shikari, Shark in 2002
* SOS Interface, 1984-1986 (LISP, Mac)
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Instruments
• Profiling tool
• CPU
• Memory
• CoreAnimation
• CoreData
• OpenGL
• Power
• etc.
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Simulator
• Software simulator ≠ hardware emulator
Simulator 3G
i386 ARM
2.5 GHz 400 MHz
Unlimited memory 40 MB
• Measure and test on oldest supported device (3G)
• Simulator OK to check memory usage
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Better user experience
1. Responsive application
2. No crash (or kill by the watchdog)
3. Save battery life
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
1. Responsive
applications
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Time
• Faster code
• makes applications more responsive
• uses less power
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Time
• Animation
• Objective C
• C and ARM code generation
• Frameworks
• File system
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Animation
• Demo
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Animation
• Scrolling at 60 fps
• Reuse identifier
• Opaque views
• Reuse formatters
• UINib (4.x)
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Objective C
• Blocks
• IMP caching
	 [array indexesOfObjectsWithOptions:NSEnumerationConcurrent
	 	 	 	 	 	 passingTest:^(id obj, NSUInteger idx, BOOL *stop) {
	 	 	 	 	 	 	 return [obj test:value];
	 	 	 	 	 	 }
	 ]
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
• Demo
Objective C
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
C and ARM
Code Generation
• Demo
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
C and ARM
Code Generation
• ARM v6 (2G, 3G)
• ARM v7 (3GS, 4)
• -Os vs -O3
• Floating points: remove Thumb on v6
• Contiguous memory, shadow variables, etc.
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Frameworks
• Foundation
• Accelerate
• Grand Central Dispatch
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Foundation
• NSMutableArray, NSMutableString
• insert O(N), O(1) at begin and end
• NSMutableDictionary, NSMutableSet
• lookup O(1) with good hash function
• NSMutableIndexSet
• Store integers without NSNumber
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Accelerate
• ARM v6
• Integer unit with 16 registers
• Hardware floating-point (VFP)
• 32 single precision registers
• 16 double precision registers
• ARM v7
• Integer unit with 16 registers
• LegacyVFP support
• NEON: 16 128-bit vector registers
• Single precision floating-point uses NEON
• NEON can decode MP3 on 10MHz CPU
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Accelerate
• Makes usingVFP and NEON easy
• Demo
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Accelerate
• 2000 APIs for hardware accelerated math
• vDSP (Digital Signal Processing)
• Fourier transforms
• BLAS (Basic Linear Algebra Subprograms)
• Matrix product
• LAPACK (Linear algebra)
• Solving system of linear equations
• Later? vImage, vForce, ...
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Grand Central Dispatch
• Concurrent programming
• Multicore or single core
• Easier and lighter than threads
• Use to move long processes off the main
thread
• dispatch_async()
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
• Demo
Grand Central Dispatch
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
File system
• Access to Flash memory is relatively slow
• Speed vary a lot from device to device
• For large files use memory mapped files
+[NSData dataWithContentsOfMappedFile:]
• Long I/O off the main thread
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
File System
• I/O of small amount of data:
• NSUserDefaults
• Property Lists
• NSArchiver
• I/O of large amount of data:
• Incremental formats
• Databases (CoreData)
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Property Lists
• Binary Format 2-3x faster than XML
• Use NSPropertyListSerialization
-[NSArray writeToFile:atomically:]
-[NSDictionary writeToFile:atomically:]
-[NSString writeToFile:atomically:encoding:error:]
NSData *data = [NSPropertyListSerialization dataWithPropertyList:dictionary
format:NSPropertyListBinaryFormat_v1_0
options:0
error:NULL];
[data writeToFile:path atomically:YES];
• Slow:
• Fast:
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
NSArchiver
• Not an incremental file format
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Database
• Use CoreData
• Do not import large
quantity of data...
• Add object stores instead
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Database Search
• Unicode string comparisons are expensive
• Use normalized derived attribute (without
accents)
• Use <= and < instead of BEGINSWITH
• Prefer prefix searching
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Database Search
• Point deVue app: 25’000 records
3G Before After
[[each name] rangeOfString:searchString
options:(NSAnchored| NSCaseInsensitive|
NSDiacriticInsensitiveSearch)].location !=
NSNotFound
[[each asciiName] hasPrefix:searchString ]
“l” 0.704 0.450
“la” 0.032 0.024
“lau” 0.010 0.008
“laus” 0.001 0.001
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
2. No Crash
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Activity Watchdog
Maximum Allowed TimeMaximum Allowed Time
Launch 20 s
Resume 10 s
Suspend 10 s
Quit 6 s
Operation 10 min
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Memory Watchdog
“Jetsam”
• Watches memory pressure
• Issues low memory warning
• Instant termination of application
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Memory
• No swap
• (but yes: virtual memory)
• Memory usage also impacts time
• allocation time,
• unloading of executable code, ...
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Memory Usage
• Avoid
• spikes
• leaks
• abandoned memory
• zombies
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Memory Spikes
• Be smart with autorelease
• Process large quantities of data in batches
• Nested autorelease pools
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
• Demo
Memory Spikes
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Memory Leaks
• Allocated memory that is inaccessible
• Unbalanced retain/release
• Forget to release property’s original value
• Leaks Instrument examines heap for leaked
memory, identify allocation
• Xcode: Build and Analyze
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Abandoned Memory
• Wasted memory
• Accessible but never used
• Memory should not grow without bounds
• Detect with Allocation Instrument:“heap
shots”
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Zombies
• Messages send to deallocated object
• Detect with Zombies template
• or Allocations “Enable zombie detection”
• Simulator only
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
3. Energy
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Energy (iPhone 3G)
• 3G,WiFi, Bluetooth, GPS: 2 W
• CPU + GPU: 800 mW
• Screen: 200 mW
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Radios and sensors
• Network
• CoreLocation
• CoreMotion
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Network
• Bandwidth usage impacts time and power
• Use compact protocols (JSON vs XML)
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
3G
• 3G networks require phones stay in high-
power state for a few seconds after last
packet is sent or received
• Limit number of connections
• Do not poll
• Use compact data formats
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
WiFi & 2G
• Less power than 3G
• 3G > 2G > WiFi
• Allowed to idle immediately
• 2G much slower
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
CPU
• Burst
• Do not poll, use events
• Accelerate: more power, less energy
Power
Time
with NEON
without NEON
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
CoreLocation
• Use minimum required accuracy
GPS kCLLocationAccuracyBest
GPS kCLLocationAccuracyNearestTenMeters
WiFi kCLLocationAccuracyHundredMeters
Cell / WiFi kCLLocationAccuracyKilometer
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
CoreLocation
• distanceFilter
• how often you receive location changed
notications
• default: all changes, many events, high CPU usage
• stopUpdatingLocation
• when good enough accuracy, switch GPS off.
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
CoreMotion
• Same thing
• Turn sensors off when in background (4.x)
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Energy diagnostics
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Energy usage
• Works on
• 3GS
• 4
• iPod 2 & 3
Level Battery life
20 Less than 1 hour
10 About 10 hours
1 More than 20 hours
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Measure on the go
• Enable device
to collect data
• Import in
Instruments
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Summary
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Instruments’ instruments
CPU
Memory
File System
Core Data
Graphics
Energy
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Instruments Wireless
• Connect device with USB
• Hold alt while choosing target
• Choose wireless device
• Disconnect from USB
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
When?
• All the time
Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch
Useful links
• Xcode Developer documentation
• Apple
http://developer.apple.com/iphone
http://developer.apple.com/videos/wwdc/2010/
• Developer forums
http://www.iphonedevsdk.com/
http://stackoverflow.com
• Developer classes
Stanford iPhone Application Development (english, free) sur iTunesU
http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.3124430053.03124430055
Sen:te (french, paying)
http://www.iphone-class.com

Weitere ähnliche Inhalte

Andere mochten auch

Rat
RatRat
Ratyethu
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
Horror key concepts
Horror key conceptsHorror key concepts
Horror key conceptsKally Nicole
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch
 
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch
 
Introduction to histology
Introduction to histologyIntroduction to histology
Introduction to histologychanthaj
 
soft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passionsoft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passionsoft-shake.ch
 
Histology of respiratory system
Histology of respiratory systemHistology of respiratory system
Histology of respiratory systemchanthaj
 

Andere mochten auch (9)

Rat
RatRat
Rat
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
Horror key concepts
Horror key conceptsHorror key concepts
Horror key concepts
 
Capital humano
Capital humanoCapital humano
Capital humano
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Caching
 
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
 
Introduction to histology
Introduction to histologyIntroduction to histology
Introduction to histology
 
soft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passionsoft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passion
 
Histology of respiratory system
Histology of respiratory systemHistology of respiratory system
Histology of respiratory system
 

Ähnlich wie soft-shake.ch - Optimizing iOS applications

Microsoft IoT & Data OpenHack ZĂźrich
Microsoft IoT & Data OpenHack ZĂźrichMicrosoft IoT & Data OpenHack ZĂźrich
Microsoft IoT & Data OpenHack ZĂźrichSascha Corti
 
OpenStack: Everything You Need To Know to Get Started (ATO2014)
OpenStack: Everything You Need To Know to Get Started (ATO2014)OpenStack: Everything You Need To Know to Get Started (ATO2014)
OpenStack: Everything You Need To Know to Get Started (ATO2014)Mark Voelker
 
OpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get StartedOpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get StartedAll Things Open
 
SensorStudio introduction (IDC 2016)
SensorStudio introduction (IDC 2016)SensorStudio introduction (IDC 2016)
SensorStudio introduction (IDC 2016)Herve Blanc
 
Openstack 101
Openstack 101Openstack 101
Openstack 101Mark Voelker
 
Graphical DSL with Sirius: how to simplify the creation of custom modeling tools
Graphical DSL with Sirius: how to simplify the creation of custom modeling toolsGraphical DSL with Sirius: how to simplify the creation of custom modeling tools
Graphical DSL with Sirius: how to simplify the creation of custom modeling toolsEtienne Juliot
 
OpenStackDay - XIFI Federation
OpenStackDay - XIFI FederationOpenStackDay - XIFI Federation
OpenStackDay - XIFI FederationAlessandro Martellone
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth Pilli
 
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...soft-shake.ch
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo Miniero
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Luciano Resende
 
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...OW2
 
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...OCCIware
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingAlexandre Gouaillard
 
Building a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with AzureBuilding a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with AzureDavide Mauri
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...VMware Tanzu
 
Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...
Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...
Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...DataWorks Summit
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroBeMyApp
 

Ähnlich wie soft-shake.ch - Optimizing iOS applications (20)

Microsoft IoT & Data OpenHack ZĂźrich
Microsoft IoT & Data OpenHack ZĂźrichMicrosoft IoT & Data OpenHack ZĂźrich
Microsoft IoT & Data OpenHack ZĂźrich
 
OpenStack: Everything You Need To Know to Get Started (ATO2014)
OpenStack: Everything You Need To Know to Get Started (ATO2014)OpenStack: Everything You Need To Know to Get Started (ATO2014)
OpenStack: Everything You Need To Know to Get Started (ATO2014)
 
OpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get StartedOpenStack: Everything You Need to Know To Get Started
OpenStack: Everything You Need to Know To Get Started
 
SensorStudio introduction (IDC 2016)
SensorStudio introduction (IDC 2016)SensorStudio introduction (IDC 2016)
SensorStudio introduction (IDC 2016)
 
Openstack 101
Openstack 101Openstack 101
Openstack 101
 
Graphical DSL with Sirius: how to simplify the creation of custom modeling tools
Graphical DSL with Sirius: how to simplify the creation of custom modeling toolsGraphical DSL with Sirius: how to simplify the creation of custom modeling tools
Graphical DSL with Sirius: how to simplify the creation of custom modeling tools
 
OpenStackDay - XIFI Federation
OpenStackDay - XIFI FederationOpenStackDay - XIFI Federation
OpenStackDay - XIFI Federation
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
 
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
OCCIware, a formal framework for Everything as a Service. OW2con'15, November...
 
Stackato v4
Stackato v4Stackato v4
Stackato v4
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC Testing
 
Building a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with AzureBuilding a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with Azure
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 
Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...
Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...
Open source computer vision with TensorFlow, Apache MiniFi, Apache NiFi, Open...
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - Intro
 

Mehr von soft-shake.ch

soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
soft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch
 
soft-shake.ch - JBoss AS 7, la rĂŠvolution
soft-shake.ch - JBoss AS 7, la rĂŠvolutionsoft-shake.ch - JBoss AS 7, la rĂŠvolution
soft-shake.ch - JBoss AS 7, la rĂŠvolutionsoft-shake.ch
 
soft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquillian
soft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquilliansoft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquillian
soft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquilliansoft-shake.ch
 
soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!soft-shake.ch
 
soft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStream
soft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStreamsoft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStream
soft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStreamsoft-shake.ch
 
soft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch
 
soft-shake.ch - De Hermes RUP Ă  Hermes Scrum
soft-shake.ch - De Hermes RUP Ă  Hermes Scrumsoft-shake.ch - De Hermes RUP Ă  Hermes Scrum
soft-shake.ch - De Hermes RUP Ă  Hermes Scrumsoft-shake.ch
 
soft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch
 
soft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp leansoft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp leansoft-shake.ch
 
soft-shake.ch - Documentation et agilitĂŠ
soft-shake.ch - Documentation et agilitĂŠsoft-shake.ch - Documentation et agilitĂŠ
soft-shake.ch - Documentation et agilitĂŠsoft-shake.ch
 
soft-shake.ch - AgilitĂŠ = discipline et rigueur ?
soft-shake.ch - AgilitĂŠ = discipline et rigueur ?soft-shake.ch - AgilitĂŠ = discipline et rigueur ?
soft-shake.ch - AgilitĂŠ = discipline et rigueur ?soft-shake.ch
 
soft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch
 
soft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠe
soft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠesoft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠe
soft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠesoft-shake.ch
 
soft-shake.ch - Le dĂŠveloppement durable
soft-shake.ch - Le dĂŠveloppement durablesoft-shake.ch - Le dĂŠveloppement durable
soft-shake.ch - Le dĂŠveloppement durablesoft-shake.ch
 
soft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scalasoft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scalasoft-shake.ch
 

Mehr von soft-shake.ch (20)

soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
soft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easy
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Values
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Grids
 
soft-shake.ch - JBoss AS 7, la rĂŠvolution
soft-shake.ch - JBoss AS 7, la rĂŠvolutionsoft-shake.ch - JBoss AS 7, la rĂŠvolution
soft-shake.ch - JBoss AS 7, la rĂŠvolution
 
soft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquillian
soft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquilliansoft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquillian
soft-shake.ch - Tests d'intĂŠgration JavaEE avec Arquillian
 
soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!
 
soft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStream
soft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStreamsoft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStream
soft-shake.ch - DĂŠploiement continu sur le cloud avec SlipStream
 
soft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecture
 
soft-shake.ch - De Hermes RUP Ă  Hermes Scrum
soft-shake.ch - De Hermes RUP Ă  Hermes Scrumsoft-shake.ch - De Hermes RUP Ă  Hermes Scrum
soft-shake.ch - De Hermes RUP Ă  Hermes Scrum
 
soft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivation
 
soft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp leansoft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp lean
 
soft-shake.ch - Documentation et agilitĂŠ
soft-shake.ch - Documentation et agilitĂŠsoft-shake.ch - Documentation et agilitĂŠ
soft-shake.ch - Documentation et agilitĂŠ
 
soft-shake.ch - AgilitĂŠ = discipline et rigueur ?
soft-shake.ch - AgilitĂŠ = discipline et rigueur ?soft-shake.ch - AgilitĂŠ = discipline et rigueur ?
soft-shake.ch - AgilitĂŠ = discipline et rigueur ?
 
soft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changement
 
soft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠe
soft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠesoft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠe
soft-shake.ch - AgilitĂŠ et Testing: de l'intĂŠrĂŞt d'une dĂŠmarche structurĂŠe
 
soft-shake.ch - Le dĂŠveloppement durable
soft-shake.ch - Le dĂŠveloppement durablesoft-shake.ch - Le dĂŠveloppement durable
soft-shake.ch - Le dĂŠveloppement durable
 
soft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scalasoft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scala
 

KĂźrzlich hochgeladen

Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

KĂźrzlich hochgeladen (20)

Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

soft-shake.ch - Optimizing iOS applications

  • 2. AgilitĂŠ iPhone Java Incubateur 8:15 Accueil des participantsAccueil des participantsAccueil des participantsAccueil des participants 8:40 Mot des organisateurs & CriĂŠe des orateursMot des organisateurs & CriĂŠe des orateursMot des organisateurs & CriĂŠe des orateursMot des organisateurs & CriĂŠe des orateurs 9:00 Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes) 9:40 10:40 - A1 - Le terrain Agile Jean-Philippe Vigniel - I1- Hello iPhone Stephane Tavera - J1 - NOSQL also means RDF stores: an Android case study Fabrizio Giudci - X1 - Le dĂŠveloppement durable Dominic Williams 11:00 12:00 - A2 - Integration of User Centered Design in Agile Development of RIA J. Borkenhagen, J. Desmazières - I2 - DĂŠveloppement d'une application iPhone pilotĂŠe par les tests Emmanuel Etasse, Van-Charles Tran - J2 - La Tequila du dĂŠveloppement Web Nicolas Martignole - X2 - Cloud Computing: anatomie et pratique Marc-Elian BĂŠgin 12:20 13:20 - A3 - Adoption de l'AgilitĂŠ par les usages Xavier Warzee - I3 - Distribution d'applications iPhone en Entreprise: RĂŠalisation d'un AppStore interne GĂŠraud de Laval - J3 - Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaScript Joonas Lehtinen - X3 - Les DVCS sont vos amis SĂŠbastien Douche Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes) 14h10 Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes) 14h50 15h50 - A4 - Scrum, introduction et mise en oeuvre avec iceScrum Claude Aubry - I4 - Agile iOS Development JĂŠrĂ´me Layat, Alexander Osterwalder - J4 - JAX-RS and Java EE 6 Paul Sandoz - X4 - IT Design & Ergonomy Pascal Petit, Aude Lussigny 16h10 17h10 - A5 - AgilitĂŠ : 10 ans dĂŠjĂ  Thierry Cros - I5 - Optimizing iOS applications Marc-Antoine Scheurer - J5 - Ecrivez et automatisez vos tests fonctionnels avec jBehave Xavier Bourguignon - X5 - NoSQL : Enn de la biodiversitĂŠ dans l'ĂŠcosystème des BD Olivier Mallassi 17h30 18h30 - A6 - Lean engineering Jean-Christophe Dubail - I6 - iPhone et Agile, l'amour vache Guillaume Duquesnay - J6 - Let's make this test suite run faster David Gageot - X6 - The feel of Scala Mario Fusco Mot de la n & tombolaMot de la n & tombolaMot de la n & tombolaMot de la n & tombola Programme de la ConfĂŠrence www.soft-shake.ch
  • 3. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Optimizing iOS Applications Marc-Antoine Scheurer marco@sente.ch
  • 4. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Optimizing is... • Risky:“If it ain’t broke, don’t x it” • A hardware problem:“Buy a faster computer” • Time consuming:“I don’t have time for performance work” • Complicated:“I don’t know where to start or what to do”
  • 5. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Why? • For the user: better experience • For you: beat the competition • For the OS: watch out the watchdog
  • 6. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch A Hardware Problem: Limited Resources 3G 3GS 4 iPad CPU ARM 11 ARM Cortex A8 A4 (Cortex A8) A4 (Cortex A8) clock 412 MHz 600 MHz 1 GHz 1GHz L1 32 KB 64 KB 64 KB 64 KB L2 - 256 KB 640 KB 640 KB GPU triangles / s PowerVR MBX Lite 0.6 M PowerVR SGX 5.2 M A4 (PowerVR SGX) 28 M ?? A4 (PowerVR SGX) 28 M ?? RAM 128 MB 256 MB 512 MB 256 MB available 40 MB 150 MB 400 MB ? 150 MB Flash available 8 - 32 GB 2 GB 16 - 32 GB 2 GB 16 - 32 GB 2 GB 16 - 32 - 64 GB 2 GB Screen 480x320 480x320 960x640 1024x728 More GPS Compass Gyroscope Battery 6h on WiFi 9h on WiFi 10h on WiFi 10-12h video
  • 7. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Where to start? Measuring Performance • Guessing often does not work • Measure - Change - Measure • Use measuring tools
  • 8. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Measuring Tools • NSLog • Instruments • Simulator
  • 9. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch NSLog NSDate *startTime = [NSDate date]; ... NSLog (@"Elapsed time: %.3f", -[startTime timeIntervalSinceNow]);
  • 10. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Instruments Tool Introduced Objective C 1988 Interface Builder 1988* Xcode 1988† Instruments 2007‡ † Project Builder, renamed Xcode in 2003 ‡ Shikari, Shark in 2002 * SOS Interface, 1984-1986 (LISP, Mac)
  • 11. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Instruments • Proling tool • CPU • Memory • CoreAnimation • CoreData • OpenGL • Power • etc.
  • 12. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Simulator • Software simulator ≠ hardware emulator Simulator 3G i386 ARM 2.5 GHz 400 MHz Unlimited memory 40 MB • Measure and test on oldest supported device (3G) • Simulator OK to check memory usage
  • 13. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Better user experience 1. Responsive application 2. No crash (or kill by the watchdog) 3. Save battery life
  • 14. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch 1. Responsive applications
  • 15. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Time • Faster code • makes applications more responsive • uses less power
  • 16. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Time • Animation • Objective C • C and ARM code generation • Frameworks • File system
  • 17. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Animation • Demo
  • 18. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Animation • Scrolling at 60 fps • Reuse identier • Opaque views • Reuse formatters • UINib (4.x)
  • 19. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Objective C • Blocks • IMP caching [array indexesOfObjectsWithOptions:NSEnumerationConcurrent passingTest:^(id obj, NSUInteger idx, BOOL *stop) { return [obj test:value]; } ]
  • 20. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch • Demo Objective C
  • 21. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch C and ARM Code Generation • Demo
  • 22. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch C and ARM Code Generation • ARM v6 (2G, 3G) • ARM v7 (3GS, 4) • -Os vs -O3 • Floating points: remove Thumb on v6 • Contiguous memory, shadow variables, etc.
  • 23. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Frameworks • Foundation • Accelerate • Grand Central Dispatch
  • 24. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Foundation • NSMutableArray, NSMutableString • insert O(N), O(1) at begin and end • NSMutableDictionary, NSMutableSet • lookup O(1) with good hash function • NSMutableIndexSet • Store integers without NSNumber
  • 25. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Accelerate • ARM v6 • Integer unit with 16 registers • Hardware floating-point (VFP) • 32 single precision registers • 16 double precision registers • ARM v7 • Integer unit with 16 registers • LegacyVFP support • NEON: 16 128-bit vector registers • Single precision floating-point uses NEON • NEON can decode MP3 on 10MHz CPU
  • 26. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Accelerate • Makes usingVFP and NEON easy • Demo
  • 27. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Accelerate • 2000 APIs for hardware accelerated math • vDSP (Digital Signal Processing) • Fourier transforms • BLAS (Basic Linear Algebra Subprograms) • Matrix product • LAPACK (Linear algebra) • Solving system of linear equations • Later? vImage, vForce, ...
  • 28. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Grand Central Dispatch • Concurrent programming • Multicore or single core • Easier and lighter than threads • Use to move long processes off the main thread • dispatch_async()
  • 29. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch • Demo Grand Central Dispatch
  • 30. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch File system • Access to Flash memory is relatively slow • Speed vary a lot from device to device • For large les use memory mapped les +[NSData dataWithContentsOfMappedFile:] • Long I/O off the main thread
  • 31. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch File System • I/O of small amount of data: • NSUserDefaults • Property Lists • NSArchiver • I/O of large amount of data: • Incremental formats • Databases (CoreData)
  • 32. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Property Lists • Binary Format 2-3x faster than XML • Use NSPropertyListSerialization -[NSArray writeToFile:atomically:] -[NSDictionary writeToFile:atomically:] -[NSString writeToFile:atomically:encoding:error:] NSData *data = [NSPropertyListSerialization dataWithPropertyList:dictionary format:NSPropertyListBinaryFormat_v1_0 options:0 error:NULL]; [data writeToFile:path atomically:YES]; • Slow: • Fast:
  • 33. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch NSArchiver • Not an incremental le format
  • 34. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Database • Use CoreData • Do not import large quantity of data... • Add object stores instead
  • 35. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Database Search • Unicode string comparisons are expensive • Use normalized derived attribute (without accents) • Use <= and < instead of BEGINSWITH • Prefer prex searching
  • 36. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Database Search • Point deVue app: 25’000 records 3G Before After [[each name] rangeOfString:searchString options:(NSAnchored| NSCaseInsensitive| NSDiacriticInsensitiveSearch)].location != NSNotFound [[each asciiName] hasPrefix:searchString ] “l” 0.704 0.450 “la” 0.032 0.024 “lau” 0.010 0.008 “laus” 0.001 0.001
  • 37. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch 2. No Crash
  • 38. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Activity Watchdog Maximum Allowed TimeMaximum Allowed Time Launch 20 s Resume 10 s Suspend 10 s Quit 6 s Operation 10 min
  • 39. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Memory Watchdog “Jetsam” • Watches memory pressure • Issues low memory warning • Instant termination of application
  • 40. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Memory • No swap • (but yes: virtual memory) • Memory usage also impacts time • allocation time, • unloading of executable code, ...
  • 41. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Memory Usage • Avoid • spikes • leaks • abandoned memory • zombies
  • 42. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Memory Spikes • Be smart with autorelease • Process large quantities of data in batches • Nested autorelease pools
  • 43. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch • Demo Memory Spikes
  • 44. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Memory Leaks • Allocated memory that is inaccessible • Unbalanced retain/release • Forget to release property’s original value • Leaks Instrument examines heap for leaked memory, identify allocation • Xcode: Build and Analyze
  • 45. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Abandoned Memory • Wasted memory • Accessible but never used • Memory should not grow without bounds • Detect with Allocation Instrument:“heap shots”
  • 46. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Zombies • Messages send to deallocated object • Detect with Zombies template • or Allocations “Enable zombie detection” • Simulator only
  • 47. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch 3. Energy
  • 48. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Energy (iPhone 3G) • 3G,WiFi, Bluetooth, GPS: 2 W • CPU + GPU: 800 mW • Screen: 200 mW
  • 49. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Radios and sensors • Network • CoreLocation • CoreMotion
  • 50. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Network • Bandwidth usage impacts time and power • Use compact protocols (JSON vs XML)
  • 51. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch 3G • 3G networks require phones stay in high- power state for a few seconds after last packet is sent or received • Limit number of connections • Do not poll • Use compact data formats
  • 52. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch WiFi & 2G • Less power than 3G • 3G > 2G > WiFi • Allowed to idle immediately • 2G much slower
  • 53. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch CPU • Burst • Do not poll, use events • Accelerate: more power, less energy Power Time with NEON without NEON
  • 54. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch CoreLocation • Use minimum required accuracy GPS kCLLocationAccuracyBest GPS kCLLocationAccuracyNearestTenMeters WiFi kCLLocationAccuracyHundredMeters Cell / WiFi kCLLocationAccuracyKilometer
  • 55. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch CoreLocation • distanceFilter • how often you receive location changed notications • default: all changes, many events, high CPU usage • stopUpdatingLocation • when good enough accuracy, switch GPS off.
  • 56. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch CoreMotion • Same thing • Turn sensors off when in background (4.x)
  • 57. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Energy diagnostics
  • 58. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Energy usage • Works on • 3GS • 4 • iPod 2 & 3 Level Battery life 20 Less than 1 hour 10 About 10 hours 1 More than 20 hours
  • 59. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Measure on the go • Enable device to collect data • Import in Instruments
  • 60. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Summary
  • 61. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Instruments’ instruments CPU Memory File System Core Data Graphics Energy
  • 62. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Instruments Wireless • Connect device with USB • Hold alt while choosing target • Choose wireless device • Disconnect from USB
  • 63. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch When? • All the time
  • 64. Š Copyright 2010, Sente SA.All rights reserved. http://www.sente.ch Useful links • Xcode Developer documentation • Apple http://developer.apple.com/iphone http://developer.apple.com/videos/wwdc/2010/ • Developer forums http://www.iphonedevsdk.com/ http://stackoverflow.com • Developer classes Stanford iPhone Application Development (english, free) sur iTunesU http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.3124430053.03124430055 Sen:te (french, paying) http://www.iphone-class.com