This document provides guidance on optimizing mobile apps for better performance. It discusses four major steps for optimization: rendering, compute, memory, and battery. Specific techniques are described for each step. For rendering, it discusses reducing overdraw through clipping and eliminating unnecessary backgrounds. For compute, it recommends profiling with Traceview and Hierarchy Viewer. For memory, it discusses caching, avoiding blocking the UI thread, and using the memory monitor, heap viewer, and allocation tracker. For battery, it discusses optimizing network requests and adapting to latency using tools like Batterystats and Battery Historian. The document provides examples and screenshots to illustrate key optimization techniques.
This document discusses optimizing mobile apps for better performance. It covers four major steps: rendering, compute, memory, and battery. Specific techniques are described for each step, including reducing overdraw, using clipping, profiling with Traceview, batching and caching, avoiding blocking the UI thread, and using JobScheduler. The goal is to gather information, gain insight, and take action to improve app speed and reduce resource usage.
At only 499$, Recon Jet is a proven smartglasses solution which is easy to find in retail worldwide. Its OS, based on Android AOSP, is easy to develop for and this deck gives you all the keys to do it!
DEVIEW2013: Automating Performance Tests for Android ApplicationsKyungmin Lee
The document discusses automating performance testing of Android apps. It explains that instrumentation can be used to track activity navigation and lifecycle without modifying the app or framework. The kmemtracer tool uses instrumentation to trace memory usage historically. It provides steps to use kmemtracer, including installing the app and test packages, starting instrumentation, interacting with the app, and pulling the trace file. The document also discusses what aspects of performance to measure, like memory, CPU and network, and some public and internal Android/Linux commands that can be used to measure resources.
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
The document provides an agenda for a talk on mastering the Android NDK with Android Studio 2.0+. It discusses the history of Android Studio support for the NDK, current capabilities, migrating to the gradle-experimental plugin, and configuring NDK projects. Demo sections cover NDK code editing and debugging in Android Studio. Solutions covered for using the NDK include the gradle plugin, manual NDK builds, and mixing gradle plugins.
Android Best Practices - Thoughts from the TrenchesAnuradha Weeraman
Here are some of the key structural building blocks in Android that can be used to build the YAMBA app:
1. Activities - For the timeline view and preference screens.
2. Services - For the background process that fetches statuses from the server. This can be started on boot and stopped based on network connectivity.
3. ContentProviders - To store and retrieve statuses from local storage.
4. BroadcastReceivers - To listen for boot completed and network connectivity changes. Can start/stop the background service accordingly.
5. AsyncTasks - For fetching statuses from the server in the background without blocking the UI.
6. Intents - To start the background service from the BroadcastReceivers
This document contains a glossary of terms related to video game design produced by a student. It includes 20 terms defined through online research with accompanying descriptions of how each term relates to video game production practice. Each term also includes an image or video link illustrating the term in a game context. The terms cover areas such as game development cycles, game engines, graphics techniques, gameplay elements, and more.
This document is a glossary of terms related to video game design produced by a student at Salford City College. It contains definitions for over 30 terms, including demo, beta, alpha, gold, debug, automation, white-box testing, bug, game engine, vertex shader, and more. For each term, the student provides a short definition from an online source as well as a description of how the term relates to their own video game production practice. Images and video links are also included to illustrate some of the terms.
The document is a glossary of terms related to video game design produced by a student at Salford City College. It contains definitions for 20 key terms, including demo, beta, alpha, debug, collision, lighting, and frames. For each term, the student provides a short definition from an online source as well as a one sentence description of how the term relates to their own video game production work.
This document discusses optimizing mobile apps for better performance. It covers four major steps: rendering, compute, memory, and battery. Specific techniques are described for each step, including reducing overdraw, using clipping, profiling with Traceview, batching and caching, avoiding blocking the UI thread, and using JobScheduler. The goal is to gather information, gain insight, and take action to improve app speed and reduce resource usage.
At only 499$, Recon Jet is a proven smartglasses solution which is easy to find in retail worldwide. Its OS, based on Android AOSP, is easy to develop for and this deck gives you all the keys to do it!
DEVIEW2013: Automating Performance Tests for Android ApplicationsKyungmin Lee
The document discusses automating performance testing of Android apps. It explains that instrumentation can be used to track activity navigation and lifecycle without modifying the app or framework. The kmemtracer tool uses instrumentation to trace memory usage historically. It provides steps to use kmemtracer, including installing the app and test packages, starting instrumentation, interacting with the app, and pulling the trace file. The document also discusses what aspects of performance to measure, like memory, CPU and network, and some public and internal Android/Linux commands that can be used to measure resources.
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
The document provides an agenda for a talk on mastering the Android NDK with Android Studio 2.0+. It discusses the history of Android Studio support for the NDK, current capabilities, migrating to the gradle-experimental plugin, and configuring NDK projects. Demo sections cover NDK code editing and debugging in Android Studio. Solutions covered for using the NDK include the gradle plugin, manual NDK builds, and mixing gradle plugins.
Android Best Practices - Thoughts from the TrenchesAnuradha Weeraman
Here are some of the key structural building blocks in Android that can be used to build the YAMBA app:
1. Activities - For the timeline view and preference screens.
2. Services - For the background process that fetches statuses from the server. This can be started on boot and stopped based on network connectivity.
3. ContentProviders - To store and retrieve statuses from local storage.
4. BroadcastReceivers - To listen for boot completed and network connectivity changes. Can start/stop the background service accordingly.
5. AsyncTasks - For fetching statuses from the server in the background without blocking the UI.
6. Intents - To start the background service from the BroadcastReceivers
This document contains a glossary of terms related to video game design produced by a student. It includes 20 terms defined through online research with accompanying descriptions of how each term relates to video game production practice. Each term also includes an image or video link illustrating the term in a game context. The terms cover areas such as game development cycles, game engines, graphics techniques, gameplay elements, and more.
This document is a glossary of terms related to video game design produced by a student at Salford City College. It contains definitions for over 30 terms, including demo, beta, alpha, gold, debug, automation, white-box testing, bug, game engine, vertex shader, and more. For each term, the student provides a short definition from an online source as well as a description of how the term relates to their own video game production practice. Images and video links are also included to illustrate some of the terms.
The document is a glossary of terms related to video game design produced by a student at Salford City College. It contains definitions for 20 key terms, including demo, beta, alpha, debug, collision, lighting, and frames. For each term, the student provides a short definition from an online source as well as a one sentence description of how the term relates to their own video game production work.
This document is a glossary of terms related to video game design and development. It contains definitions of key terms such as alpha, beta, debug, automation, white-box testing, bugs, game engines, vertex shaders, pixel shaders, and post-processing. For each term, it provides a short definition from an online source as well as a description of how the term relates to the author's own video game production practice. Accompanying images and video links are also included to illustrate examples of many of the terms.
The document is a glossary assignment for a games design course requiring the student to research and define 15 gaming terms and relate them to their own production practice. For each term, the student provides a short definition from an online source, describes how the term relates to their work, and includes an image or video example. Some of the terms defined and related to the student's practice include demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, game engines, vertex shaders, and pixel shaders.
The document is a glossary assignment for a games design course requiring students to research and define terms related to video game development. It contains definitions for common terms like alpha, beta, demo, debug, bug, and more. For each term, the student provided a short definition from an online source, described how it relates to their own work, and included a supporting image.
[1D6]RE-view of Android L developer PRE-viewNAVER D2
The document discusses key architectural changes and performance improvements in Android L, including:
1. The introduction of a separate UI and render thread to improve responsiveness.
2. A move from just-in-time (JIT) compilation to ahead-of-time (AOT) compilation with the new Android Runtime (ART) to boost performance.
3. Enhancements to the garbage collection model to reduce pause times and fragmentation.
This document contains a student's work on a glossary of terms related to video game design. It includes 10 terms that are defined based on online research, with descriptions of how each term relates to the student's own video game production practice. For each term, an image or video is provided as a visual example. The glossary contains technical terms about game development stages, engines, testing, and graphics.
Lewis brady engine terminology (edited version)LewisB2013
This document is a glossary created by Lewis Brady containing terms related to video game design and video game testing. It includes definitions for terms like demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, vertex shader, and pixel shader. For each term, Brady provides a short definition from an online source, describes how the term relates to his own video game production practice, and includes one or two video or image links showing the term in use within a game. The purpose of the glossary is to research and gather definitions for specific video game terms using an provided template.
Anthony newman y1 gd engine_terminologyvvvvvanthonynewman
This document contains a glossary of terms related to video game design produced by a student at Salford City College. It includes over 30 terms commonly used in video game development with short definitions sourced from online references. For each term, the student provided a short description of how the term relates to their own work and an image or video demonstrating the term in a game when possible.
The document is a glossary assignment for a games design course requiring the student to research and define video game related terms. It consists of the student's research into 20 terms, providing short definitions sourced from online references for each as well as images showing examples of the terms in games and descriptions of how the terms relate to their own work.
Cameron mc rae y1 gd_engineterminology no videosCameronMcRae901
This document is a glossary assignment for a games design course requiring students to research and define video game development terms. It contains definitions for over 20 terms related to various stages of game development such as pre-alpha, alpha, and beta testing. Additional terms defined include debug, automation, white-box testing, bugs, game engines, physics, collision detection, lighting, and more. For each term, the student provided a short definition from an online source, described how it relates to their own work, and included a supporting image.
This document is a glossary assignment from Salford City College requiring the student to research and define video game design and video game terms. It provides definitions for over 20 terms related to video games, game engines, and game development. For each term, the student provided a short definition from an online source, described how the term relates to their own production practice, and included an image or video example when possible.
The document is a glossary assignment for a games design course requiring research and definitions of video game terms. It includes definitions for terms like demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, vertex shader, pixel shader, and others. For each term, the student provided a short definition from an online source, described how it relates to their own work, and included an image or video example when possible.
This document contains a glossary of terms related to video game design produced by a student. It includes 9 terms defined with short explanations and references. Each definition includes a short description of how the term relates to the student's own game production practice. The terms are: Demo, Beta, Alpha, Pre-Alpha, Gold, Debug, Automation, White-Box Testing, and Bug. Images and video links are provided to help illustrate each term.
The document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, debugging, physics, and anti-aliasing among others.
The document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, lighting, and anti-aliasing among others.
This document contains a glossary of terms related to video game design and development. It provides definitions for key terms such as demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, game engine, vertex shader, pixel shader, post-processing, rendering, and normal map. For each term, it gives a short definition from an online source, describes how the term relates to the author's own game production practice, and includes an image or video for illustration. The glossary is part of an assignment to research and explain important video game industry terminology.
Project Analysis - How to Start Project DevelomentAdarsh Patel
Are you Freshers ? Don't know how to start analysis of project which can be developed using php, .net or any other language? Check out you will get quick start.
Workhsop on Logic Building for ProgrammingAdarsh Patel
Do you face trouble while analysis of any project ? Don't know from where to start analysis of any project or program. Here is the workshop which can give you quick start with analysis.
Workshop on Search Engine OptimizationAdarsh Patel
Search Engine Optimization is the way to enhance your website/blog ranking so you will get more customer and finally more money. The Workshop covers every aspect of Search Engine Optimization with practical aspects. Suitable for any kind of audience who want to increase their presence in search engine. Check more workshop @ http://arthtechnology.com/workshop.html
Mobile apps are increasingly popular, with over 1 million available and the average user having 36 apps, though 1/4 are never used. Deep linking allows apps to be discoverable through search and accessible from related web pages. The App Indexing API enables deep links between apps and websites to improve discoverability and drive more users and engagement. The presentation demonstrated how to implement deep links and verify the app in Google Search Console for indexing.
This document is a glossary of terms related to video game design and development. It contains definitions of key terms such as alpha, beta, debug, automation, white-box testing, bugs, game engines, vertex shaders, pixel shaders, and post-processing. For each term, it provides a short definition from an online source as well as a description of how the term relates to the author's own video game production practice. Accompanying images and video links are also included to illustrate examples of many of the terms.
The document is a glossary assignment for a games design course requiring the student to research and define 15 gaming terms and relate them to their own production practice. For each term, the student provides a short definition from an online source, describes how the term relates to their work, and includes an image or video example. Some of the terms defined and related to the student's practice include demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, game engines, vertex shaders, and pixel shaders.
The document is a glossary assignment for a games design course requiring students to research and define terms related to video game development. It contains definitions for common terms like alpha, beta, demo, debug, bug, and more. For each term, the student provided a short definition from an online source, described how it relates to their own work, and included a supporting image.
[1D6]RE-view of Android L developer PRE-viewNAVER D2
The document discusses key architectural changes and performance improvements in Android L, including:
1. The introduction of a separate UI and render thread to improve responsiveness.
2. A move from just-in-time (JIT) compilation to ahead-of-time (AOT) compilation with the new Android Runtime (ART) to boost performance.
3. Enhancements to the garbage collection model to reduce pause times and fragmentation.
This document contains a student's work on a glossary of terms related to video game design. It includes 10 terms that are defined based on online research, with descriptions of how each term relates to the student's own video game production practice. For each term, an image or video is provided as a visual example. The glossary contains technical terms about game development stages, engines, testing, and graphics.
Lewis brady engine terminology (edited version)LewisB2013
This document is a glossary created by Lewis Brady containing terms related to video game design and video game testing. It includes definitions for terms like demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, vertex shader, and pixel shader. For each term, Brady provides a short definition from an online source, describes how the term relates to his own video game production practice, and includes one or two video or image links showing the term in use within a game. The purpose of the glossary is to research and gather definitions for specific video game terms using an provided template.
Anthony newman y1 gd engine_terminologyvvvvvanthonynewman
This document contains a glossary of terms related to video game design produced by a student at Salford City College. It includes over 30 terms commonly used in video game development with short definitions sourced from online references. For each term, the student provided a short description of how the term relates to their own work and an image or video demonstrating the term in a game when possible.
The document is a glossary assignment for a games design course requiring the student to research and define video game related terms. It consists of the student's research into 20 terms, providing short definitions sourced from online references for each as well as images showing examples of the terms in games and descriptions of how the terms relate to their own work.
Cameron mc rae y1 gd_engineterminology no videosCameronMcRae901
This document is a glossary assignment for a games design course requiring students to research and define video game development terms. It contains definitions for over 20 terms related to various stages of game development such as pre-alpha, alpha, and beta testing. Additional terms defined include debug, automation, white-box testing, bugs, game engines, physics, collision detection, lighting, and more. For each term, the student provided a short definition from an online source, described how it relates to their own work, and included a supporting image.
This document is a glossary assignment from Salford City College requiring the student to research and define video game design and video game terms. It provides definitions for over 20 terms related to video games, game engines, and game development. For each term, the student provided a short definition from an online source, described how the term relates to their own production practice, and included an image or video example when possible.
The document is a glossary assignment for a games design course requiring research and definitions of video game terms. It includes definitions for terms like demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, vertex shader, pixel shader, and others. For each term, the student provided a short definition from an online source, described how it relates to their own work, and included an image or video example when possible.
This document contains a glossary of terms related to video game design produced by a student. It includes 9 terms defined with short explanations and references. Each definition includes a short description of how the term relates to the student's own game production practice. The terms are: Demo, Beta, Alpha, Pre-Alpha, Gold, Debug, Automation, White-Box Testing, and Bug. Images and video links are provided to help illustrate each term.
The document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, debugging, physics, and anti-aliasing among others.
The document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, lighting, and anti-aliasing among others.
This document contains a glossary of terms related to video game design and development. It provides definitions for key terms such as demo, beta, alpha, pre-alpha, gold, debug, automation, white-box testing, bug, game engine, vertex shader, pixel shader, post-processing, rendering, and normal map. For each term, it gives a short definition from an online source, describes how the term relates to the author's own game production practice, and includes an image or video for illustration. The glossary is part of an assignment to research and explain important video game industry terminology.
Project Analysis - How to Start Project DevelomentAdarsh Patel
Are you Freshers ? Don't know how to start analysis of project which can be developed using php, .net or any other language? Check out you will get quick start.
Workhsop on Logic Building for ProgrammingAdarsh Patel
Do you face trouble while analysis of any project ? Don't know from where to start analysis of any project or program. Here is the workshop which can give you quick start with analysis.
Workshop on Search Engine OptimizationAdarsh Patel
Search Engine Optimization is the way to enhance your website/blog ranking so you will get more customer and finally more money. The Workshop covers every aspect of Search Engine Optimization with practical aspects. Suitable for any kind of audience who want to increase their presence in search engine. Check more workshop @ http://arthtechnology.com/workshop.html
Mobile apps are increasingly popular, with over 1 million available and the average user having 36 apps, though 1/4 are never used. Deep linking allows apps to be discoverable through search and accessible from related web pages. The App Indexing API enables deep links between apps and websites to improve discoverability and drive more users and engagement. The presentation demonstrated how to implement deep links and verify the app in Google Search Console for indexing.
The document summarizes new features in Android and the Android Support Library. Some key points include: Android Studio 2.2 includes improvements to speed, design tools, and testing capabilities. ConstraintLayout is a new layout that is more flexible than RelativeLayout. Notifications and quick settings have been enhanced. Multi-window mode and picture-in-picture now allow apps to span screens. Java 8 language features and runtime improvements increase performance. The Support Library introduces updates to fragments, notifications, and vector asset handling.
DroidCon UK 2015 was a conference held in London, England on September 12, 2015. It focused on supporting the Android platform and creating a global network for Android developers and companies. Over 50 sessions were presented on topics like Android development, Gradle, RxJava, Kotlin and more. The agenda included talks on Android for Java developers, meaningful motion, mobile services from Google, Gradle performance, the Jack and Jill build system, and RxJava/RxAndroid.
The document outlines an agenda for a study group meeting on developing Android apps. The agenda includes an introduction, rules, ice breaking, a review of lesson content from the previous week, a discussion of materials and issues, an event of the week, a simple project, and sharing experiences. It provides details on the lesson content covered, including creating a simple UI, list views, adapters, and responsive design. It also lists topics for the event of the week such as object oriented programming, design patterns, and Git.
in this presentation i will discuss fragment and how to use it to enhance your android development, also know the basics of making more than one layer in your apps
Best way to start learning android with workshop on Fundamental of Android. Android Fundamental workshop covers the basic fundamental about the android application development and how to start including ide and more..
Working better together designers & developersVitali Pekelis
This document summarizes a presentation given to designers and developers on working better together. The presentation covered identifying problems between designers and developers, using native design principles in Android, UX/UI design tools and tips, handoff tools like Zeplin, and concluding that good communication and establishing workflows are important. Material design resources like Material.io were demonstrated.
This document provides an overview of Android development for Java developers. It discusses Android software stacks, development tools, Google development references and tools, and includes examples of building a "Hello World" app, using XML for the UI, activities and fragments, intents, common views, list views and adapters, dialogs, toasts, the support library, and Google Play services. The presentation was given by Michael Hantler of FullStack Developers Israel on April 24th, 2014.
This document discusses how to add notifications, broadcast receivers, services, and sync adapters to Android apps. It covers creating basic notifications using NotificationCompat.Builder, showing notifications using the NotificationManager, and adding actions and expanded layouts to notifications. It also explains how to create broadcast receivers by extending BroadcastReceiver and registering receivers statically in the manifest or dynamically in code.
This document discusses management innovation. It begins by asking why management innovation matters and provides examples of companies like GE, DuPont, and Procter & Gamble that demonstrated innovative management practices. It defines management innovation as a significant change to how management work is performed. The document then discusses how to become a management innovator, including committing to big problems, searching for new principles, deconstructing orthodoxies, and exploiting analogies. Overall, the document promotes management innovation as a way for companies to gain competitive advantages.
This document outlines an agenda for a mobile development camp workshop on Android development. The agenda includes introductions to Android architecture, building blocks like activities and intents, and best practices. It provides overviews and definitions of key Android concepts like the Dalvik VM, application lifecycles, and using intents to navigate between activities. Attendees will learn how to build their first basic Android application.
Arth Technology, Vadodara, India has organized workshop on How to Crack Interview. Workshop Covers from Resume Building, How to Write Letter, How to Apply, Prepare Naukri.com Profile, Face Interview and more...
Team Technologies LLC consists of mobile developers Oleg and Nazar. The document discusses developing cross-platform mobile applications using Xamarin. It outlines why native mobile development is important, what Xamarin is, and how to architect mobile apps in Xamarin including using Xamarin Forms. It provides an agenda and overview of the topics that will be covered.
Александр Махомет "Beyond the code или как мониторить ваш PHP сайт"Fwdays
This document discusses the importance of user experience, performance monitoring, error handling, and incident response for web applications. It recommends measuring key metrics like errors, response times, and availability; using tools like Graphite, ELK, and PagerDuty for logging, monitoring, and alerting; and implementing a DevOps culture and postmortem process for continuous improvement.
Benchmarking is a process of evaluating performance by comparing metrics over time or between configurations. The document discusses benchmarking software performance, focusing on speed as an important and easy-to-measure metric. It introduces Benchmarker.py, a tool for Python code benchmarking that collects execution time data and integrates with CodeSpeed for visualization. Key aspects of effective benchmarking discussed include choosing representative tests, controlling the test environment, and maintaining a historical performance archive.
CIS 512 discussion post responses.CPUs and Programming Pleas.docxmccormicknadine86
The document discusses responses from students in a CIS 512 discussion post on CPUs and programming. It includes three student posts that:
1) Compare the specifications of two CPUs, concluding that clock rate alone does not determine speed and one CPU is faster due to higher base clock speed and turbo boost.
2) Discusses benefits of planning techniques like pseudocode, providing an example of pseudocode for a face drawing program.
3) Compares two CPUs, finding one has a faster base clock speed, making it faster overall despite similar specifications otherwise. Pseudocode and flowcharts are discussed as planning methods, with flowcharts preferred for beginners.
An Introduction to Prometheus (GrafanaCon 2016)Brian Brazil
Often what you monitor and get alerted on is defined by your tools, rather than what makes the most sense to you and your organisation. Alerts on metrics such as CPU usage which are noisy and rarely spot real problems, while outages go undetected. Monitoring systems can also be challenging to maintain, and overall provide a poor return on investment.
In the past few years several new monitoring systems have appeared with more powerful semantics and which are easier to run, which offer a way to vastly improve how your organisation operates and prepare you for a Cloud Native environment. Prometheus is one such system. This talk will look at the monitoring ideal and how whitebox monitoring with a time series database, multi-dimensional labels and a powerful querying/alerting language can free you from midnight pages.
This document provides an overview of different tools for troubleshooting production application issues: IntelliTrace, WinDbg, and System Center Application Performance Monitoring (APM). IntelliTrace allows recording an application's execution flow and data for historical debugging. WinDbg generates dump files for critical hang/termination issues. System Center APM provides always-on monitoring of applications, performance monitoring, and correlation across servers. The document compares the tools and provides demos of collecting traces using IntelliTrace and monitoring an application with System Center APM.
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)Brian Brazil
Prometheus is a next-generation monitoring system with a time series database at it's core. Once you have a time series database, what do you do with it though? This talk will look at getting data in, and more importantly how to use the data you collect productively.
Contact us at prometheus@robustperception.io
The document discusses optimizing performance for Ajax applications. It recommends:
- Keeping client-side code light by only requesting necessary data from the server via JSON messages.
- Avoiding unnecessary DOM touches and reflows which are computationally expensive.
- Measuring performance before and after optimizations to validate improvements rather than relying on intuition.
- Optimizing algorithms and avoiding unnecessary work rather than prematurely optimizing without evidence of need.
Reactive programming allows for non-blocking and concurrent executions. It is designed to be more efficient by using fewer threads and less memory. This makes applications more resilient and scalable to handle high connection volumes and traffic variability. The developer experience is improved through actionable stacktraces and debugging of reactive flows.
This document discusses dynamic analysis techniques for understanding the runtime behavior of object-oriented programs. It describes various sources of runtime information, such as program output, resource usage, and internal instrumentation. Common tools for dynamic analysis include loggers, debuggers, and profilers. Reverse engineering techniques can combine static and dynamic views. Feature-based analysis aims to map features to source code by comparing execution traces.
Profiling is a technique used to analyze the performance and behavior of software applications. It involves measuring aspects like memory usage, CPU time, disk I/O, and counting function calls of a program during execution. This helps identify bottlenecks and optimize applications. There are various Java profiling tools available like Java VisualVM, Java Mission Control, and JProfiler that help analyze performance metrics and JIT compilation logs. Profiling is important for improving software performance by reducing latency and increasing throughput through optimizations informed by profiling results.
The document discusses code instrumentation and its importance. It provides three types of instrumentation: 1) Adding trace information, 2) Adding debug information, and 3) Adding performance counters. It emphasizes that instrumentation makes code easier to debug, tune, and maintain over time. It notes that production code should always have instrumentation enabled via configuration settings. Overall, the document promotes instrumentation as a best practice for monitoring code behavior and performance.
This document discusses performance engineering for batch and web applications. It begins by outlining why performance testing is important. Key factors that influence performance testing include response time, throughput, tuning, and benchmarking. Throughput represents the number of transactions processed in a given time period and should increase linearly with load. Response time is the duration between a request and first response. Tuning improves performance by configuring parameters without changing code. The performance testing process involves test planning, creating test scripts, executing tests, monitoring tests, and analyzing results. Methods for analyzing heap dumps and thread dumps to identify bottlenecks are also provided. The document concludes with tips for optimizing PostgreSQL performance by adjusting the shared_buffers configuration parameter.
This document provides information on improving Drupal performance through various techniques including performance testing, caching, optimizing database and server configurations, using tools like Varnish, load balancers, and CDNs, and addressing inefficient code. It also discusses a case study of using scalable cloud hosting and caching strategies to handle peak traffic for a site during major awards events.
So You Just Inherited a $Legacy Application… NomadPHP July 2016Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful “LEGACY” word to ring in your head. HAVE NO FEAR! I’ll share the techniques I’ve learned after working on several legacy codebases to help update that old code to the current PHP generation. We’ll cover triaging the old code base, writing tests to make sure you don’t break anything, and how to modernize your old code base!
WebSphere Technical University: Introduction to the Java Diagnostic ToolsChris Bailey
IBM provides a number of free tools to assist in monitoring and diagnosing issues when running
any Java application - from Hello World to IBM or third-party, middleware-based applications. This
session introduces attendees to those tools, highlights how they have been extended with IBM
middleware product knowledge, how they have been integrated into IBM’s development tools,
and how to use them to investigate and resolve real-world problem scenarios
Presented at the WebSphere Technical University 2014, Dusseldorf
Successfully Implement Responsive Design Behavior with Adobe Experience ManagerPerficient, Inc.
This document discusses how to manage responsive design behaviors using Adobe Experience Manager. It describes the challenge of displaying content across different devices which may have varying screen sizes and resolutions. The solution presented allows content authors to determine which content is displayed at specific breakpoints and manage the grid layout. It involves building components that use listeners and logic to dynamically handle the display of regions and columns based on the targeted device or screen size. The demonstration shows how authors can control responsive behavior through the new components.
This document discusses various tools and techniques for optimizing Android app performance. It describes tools in Android Studio like Lint, DDMS, Developer Options, Hierarchy Viewer and Systrace that can help detect and fix issues like memory leaks, GPU overdraw and inefficient code. It also provides code snippets and tips to write optimized code through best practices like using static final for constants and avoiding unnecessary object creation. The goal is to analyze, improve and smooth out an app's performance through optimization.
Similar to Optimizing apps for better performance extended (20)
9. Overdraw
➢Overdraw is a term used to describe how many times a pixel on the screen has been redrawn in
a single frame.
10. Overdraw...
1. On your mobile device, go to Settings and tap Developer Options.
2. In the Hardware accelerated rendering section, select Debug GPU
Overdraw.
3. In the Debug GPU overdraw popup, select Show overdraw areas.
4. Don't panic as your screen turns into a delirium of colors. The coloring
is provided to help you diagnose your app's display behavior.
11. Overdraw…
5. The colors are hinting at the amount of overdraw on your screen
for each pixel, as follows:
True color: No overdraw
Blue: Overdrawn once
Green: Overdrawn twice
Pink: Overdrawn three times
Red: Overdrawn four or more times
12. Overdraw…
How?
➢Eliminate unneeded backgrounds and
drawables
➢Define areas will hide portions of view
➢Use RelativeLayout instead of LinearLayout
Best Practices:
➢getWindow().setBackgroundDrawable(null
➢android:background:”@null”
13. Clipping
➢Clipping is an optimisation which can be defined as Android
framework knows overdraw is a problem and will go out of its
way to avoid drawing UI widgets that may be invisible in the final
image.
➢Canvas.quickReject()
➢Canvas.clipRect()
DRAWABLE
ZONE
Canvas.clipRect()
20dp
20dp 20dp
20dp
15. Clipping
Q: Bu seviyede overdraw yaşanmasına ne sebep olmuş olabilir?
1- Dikkatsiz kod yazarak, çok fazla sayıda background tanımlamış olabiliriz.
2- Kartları ekrana bazı parçaları hidden, birbirinin üstünü örtecek şekilde çizmiş olabiliriz.
3- Bu senaryoda Custom View kullanmamalıydık.
22. Hierarchy Viewer
Each view in your subtree gets three dots, which
can be green, yellow, or red.
The left dot represents the Draw Process of the
rendering pipeline.
The middle dot represents the Layout Phase.
The right dot represents the Execute Phase.
23. Hierarchy Viewer
The color of the dots indicates the relative performance of this node
in respect to all other profiled nodes.
Green means the view renders faster than at least half of the other
views.
Yellow means the view renders faster than the bottom half of the
other views.
Red means the view is among the slowest half of views.
32. Profiling with Traceview
➢Traceview is a graphical viewer for execution logs that you create by using the Debug class to log
tracing information in your code. Traceview can help you debug your application and profile its
performance.
34. Profiling with Traceview
The Timeline pane visualizes how your
code executes over time.
Each row shows a thread.
Each bar on the timeline is a method
executing.
Each color is for a different method;
every time a method executes, you
see a the same color bar.
The width of its bar indicates how long
the method takes to execute.
The Profiling pane shows a list of methods.
Select a method to see who called it (Parent) and who it's calling
(Children).
The selected method is also highlighted in theTimeline pane.
The columns show exclusive and inclusive CPU and real times,
percentages, ratios, and how often a method was called.
The exclusive time is the time spent just in the method itself, which can
help you find issues within that specific method.
The inclusive time is for the method and all methods it calls, which can
help you find problems with your call tree.
The Calls+Rec column shows how many times a method was called
recursively, which can help you track down performance issues.
36. Caching for Networking
Caching HTTP
Responses is
disabled by
Default.
https://www.youtube.com/watch?v=7lxVqqWwTb0&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=1
39. Caching for Networking
Force a Network Response:
Force a Cache Response:
http://developer.android.com/reference/android/net/http/HttpResponseCache.html
43. How to Solve?
Android's single thread model:
1. Do not block the UI thread
2. Do not access the Android UI toolkit
from outside the UI thread
44. How to Solve?
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap bitmap =
loadImageFromNetwork("http://example.com/image.png")
;
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b =
loadImageFromNetwork("http://example.com/image.p
ng");
mImageView.setImageBitmap(b);
}
}).start();
}
45. How to Solve?
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
46. Analyzing UI Performance with Systrace
➢The Systrace tool allows you to collect and inspect timing information across an entire Android
device, which is called a trace.
➢As simply, you should put your code that you want to trace between this two lines.
Trace.beginSection("Data Structures");
// TODO:
Trace.endSection();
50. Memory
Basic Prinsiples of Garbage Collection:
➢Find data objects in a program that cannot be accesed in the future.
➢Reclaim the resources used by those objects.
51. Memory Monitor
Memory Monitor reports in real-time how your app allocates memory.
➢Showing available and used memory in a graph, and garbage collection events over time.
➢Quickly testing whether app slowness might be related to excessive garbage collection events.
➢Quickly testing whether app crashes may be related to running out of memory.
Dark blue: Amount of memory that your app is currently using.
Light blue: Available, unallocated memory.
54. Heap Viewer
Heap Viewer reports in real-time what types of objects your application has allocated, how many,
and their sizes on the heap.
➢Getting a sense of how your app allocates and frees memory.
➢Identifying memory leaks.
➢5.0+
56. Allocation Tracker
Allocation Tracker records an app's memory allocations and lists all allocated objects for the profiling cycle with their call
stack, size, and allocating code.
➢Identifying where many similar object types, from roughly the same call stack, are allocated and deallocated over a very
short period of time.
➢Finding the places in your code that may contribute to inefficient memory use.
57. How your app should manage memory
➢ Use services sparingly
➢ Release memory when your user interface becomes hidden
➢ Release memory as memory becomes tight
➢ Check how much memory you should use
➢ Avoid wasting memory with bitmaps
➢ Use optimized data containers
➢ Be aware of memory overhead
➢ Be careful with code abstractions
➢ Use nano protobufs for serialized data
➢ Avoid dependency injection frameworks
➢ Be careful about using external libraries
➢ Optimize overall performance
➢ Use ProGuard to strip out any unneeded code
http://developer.android.com/training/articles/memory.html
59. Batterystats & Battery Historian
Batterystats collects battery data from your device, and Battery Historian converts that data into an HTML
visualization that you can view in your Browser.
➢Showing you where and how processes are drawing current from the battery.
➢Identifying tasks in your app that could be deferred or even removed to improve battery life.
➢5.0+
61. Batterystats & Battery Historian
battery_level: When the battery level was recorded and logged.
top: The application running at the top.
wifi_running: Shows that the Wi-Fi network connection was active.
screen: Screen is turned on.
phone_in_call: Recorded when the phone is in a call.
wake_lock: App wakes up, grabs a lock, does small work, then goes back to sleep. Trunning: Shows when the CPU is
awake. Check whether it is awake and asleep when you expect it to be.
wake_reason: The last thing that caused the kernel to wake up. If it's your app, determine whether it was necessary.
mobile_radio: Shows when the radio was on. Starting the radio is battery expensive. Many narrow bars close to each
other can indicate opportunities for batching and other optimizations.
gps: Indicates when the GPS was on. Make sure this is what you expect.
62. Batterystats & Battery Historian
Battery History: A time series of power-relevant events, such as screen, Wi-Fi, and
app launch. These are also visible through Battery Historian.
Per-PID Stats: How long each process ran.
Statistics since last charge: System-wide statistics, such as cell signal levels and
screen brightness. Provides an overall picture of what's happening with the device.
This information is especially useful to make sure no external events are affecting
your experiment.
Estimated power use (mAh) by UID and peripheral: This is currently an extremely
rough estimate and should not be considered experiment data.
Per-app mobile ms per packet: Radio-awake-time divided by packets sent. An
efficient app will transfer all its traffic in batches, so the lower this number the better.
All partial wake locks: All app-held wakelocks, by aggregate duration and count.
70. Wakelock API
private void pollServer() {
mWakeLockMsg.setText("Polling the server! This day sure went by fast.");
for (int i=0; i<10; i++) {
mWakeLock.acquire();
mWakeLockMsg.append("Connection attempt, take " + i + ":n");
mWakeLockMsg.append(getString(R.string.wakelock_acquired));
// Always check that the network is available before trying to connect. You don't want
// to break things and embarrass yourself.
if (isNetworkConnected()) {
new SimpleDownloadTask().execute();
} else {
mWakeLockMsg.append("No connection on job " + i + "; SAD FACE");
}
}
}
@Override
protected void onPostExecute(String result) {
mWakeLockMsg.append("n" + result + "n");
releaseWakeLock();
}
71. JobScheduler
mServiceComponent = new ComponentName(this,
MyJobService.class);
@Override
public boolean onStartJob(JobParameters params) {
Log.i(LOG_TAG, "Totally and completely working
on job " + params.getJobId());
// First, check the network, and then attempt to
connect.
if (isNetworkConnected()) {
new SimpleDownloadTask() .execute(params);
return true;
} else {
Log.i(LOG_TAG, "No connection on job " +
params.getJobId() + "; sad face");
}
return false;
}
public void pollServer() {
JobScheduler scheduler = (JobScheduler)
getSystemService(Context.JOB_SCHEDULER_SERVICE);
for (int i=0; i<10; i++) {
JobInfo jobInfo = new JobInfo.Builder(i,
mServiceComponent)
.setMinimumLatency(5000) // 5
seconds
.setOverrideDeadline(60000) // 60
seconds (for brevity in the sample)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
// WiFi or data connections
.build();
mWakeLockMsg.append("Scheduling job " + i +
"!n");
scheduler.schedule(jobInfo);
}
}