CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и...

47
Оптимизация приложений для Android x86 Антон Коновалов, Дмитрий Шкурко Intel Corporation
  • date post

    20-Oct-2014
  • Category

    Internet

  • view

    612
  • download

    4

description

 

Transcript of CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и...

Page 1: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Оптимизация приложений для Android x86Антон Коновалов, Дмитрий Шкурко

Intel Corporation

Page 2: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice2

План выступления

Обзор

Устройства на базе аппаратуры средств Intel

Инструменты разработки приложений на HTML5

Инструменты разработки приложений для Dalvik* и C/C++ приложений

Разработка C/C++ приложений

Инструменты разработки C/C++ приложений

Демо

Page 3: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Телефоны и планшеты на базе x86 архитектуры

3

Page 4: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Следующее поколение u-архитектуры Atom*

Page 5: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Точка зрения пользователя

Android Runtime

Core Libraries

Dalvik Virtual Machine

Blink (WebKit)

Приложения на базе Android Dalvik* и HTML5• Должны работать без изменений

Приложения, содержащие двоичный код,• Должны работать без изменений, но не с максимальной

эффективностью

Как правило, популярные приложения используют бинарныебиблиотеки

Page 6: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Типы приложений, поставляемые в бинарном виде

7

• Порт существующего кода с других платформ• Оптимизация без глобальной переделки• Требования к производительности в условиях ограничения на ресурсы

• Обработка видео, аудио, сигналов• Алгоритмы симуляции• Прямой доступ к CPU/HW

Page 7: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Инструменты разработки приложений на HTML5

8

Page 8: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Intel® HTML5 Development Environment (XDK)

Создание, отладка и распространение HTML5 приложенийна базе общего кода для разных платформ

xdk.intel.com

Page 9: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Инструменты разработки приложений для Dalvik* иC/C++ приложений

10

Page 10: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice11

Integrated Native Developer Experience (beta)

Page 11: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice12

Integrated Native Developer Experience (beta)

Базовые инструментыразработки

Media Pack for Android

Threading Building Blocks

Инструменты для анализапроизводительности и отладки

Compute Code Builder

Intel C/C++ компилятор

Page 12: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice13

Базовые инструменты разработки

Android developer tools (ADT)

Android NDK

Android SDK Eclipse* IDE

Android plugin for

Visual Studio*

Apache Ant* Intel* HAXM

Android plugin for Eclipse*

Page 13: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Hardware Accelerated Execution Manager (Intel®

HAXM)

www.intel.com/software/android

HAXM драйвер для эмулятораx86

Образ ОС Android для x86Готовые образы для эмуляторавходят в SDK• Образы для x86 предоставляются, начиная с API 10

Виртуализация ускоряет эмуляцию в2-4 раза• HAXM на Mac и Windows ОС• KVM на Linux

Page 14: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice15

Демо (тесты на производительность памяти ипроцессора)

HAXM off HAXM on

Page 15: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Compute Code Builder

16

http://software.intel.com/en-us/articles/getting-started-with-compute-code-builder

Page 16: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Возможности Compute Code Builder

17

• Preview JumpStart kit – учебный инструмент для пошагового построенияOpenCL проекта

• Code editing – Интеграция с популярными IDE:

• Синтаксическая раскраска кода

• Авто-дополнение кода

• Обработка ошибок компиляции

Page 17: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Возможности Compute Code Builder (продолжение)

18

• Compile and Build – компиляция OpenCL ядер, подготовка бинарных файловна Android устройствах

• OpenCL API debug – отладка вызовов OpenCL API, инспектированиеобъектов и очередей OpenCL.

• OpenCL kernel debug – пошаговая отладка на центральном процессоре

• Kernel analyze – анализ производительности OpenCL ядер на машинах сграфическим процессором Intel® Graphics

Page 18: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice19

Threading Building Blocks

• Современная C++ библиотека параллельных алгоритмов для эффективногораспараллеливания приложений

• Программирование на уровне элементов работы, а не потоков ОС

• Динамическое распределение нагрузки

• Проверенные алгоритмы

• Код доступен https://www.threadingbuildingblocks.org/ под GPL

• Коммерческая версия http://software.intel.com/en-us/intel-tbb

Page 19: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Intel® Threading Building Blocks - Тизер#include <tbb/parallel_reduce.h>

#include <tbb/blocked_range.h>

double getPi() // \int_0^1 4dx/(1+x^2) = \pi

{

const int num_steps = 10000000;

const double step = 1./num_steps;

double pi = tbb::parallel_reduce(

tbb::blocked_range<int>(0, num_steps),

double(0),

[&](const tbb::blocked_range<int>& r, double current_sum ) -> double {

for (size_t i=r.begin(); i!=r.end(); ++i) {

double x = (i+0.5)*step;

current_sum += 4.0/(1.0 + x*x);

}

return current_sum; // body returns updated value of the accumulator

},

[]( double s1, double s2 ) {

return s1+s2;

}

);

return pi*step;

}

Page 20: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Intel® TBB – Использование в приложениях

В новых версиях Android

обработка зависимостей

между библиотеками

осуществляется автоматически

Android.mk#for including tbb in your project:

include $(CLEAR_VARS)

LOCAL_MODULE := tbb

LOCAL_SRC_FILES := $(TBB_PATH)/lib/android/libtbb.so

LOCAL_EXPORT_C_INCLUDES := $(TBB_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)

#for calling tbb from your lib:

LOCAL_CPP_FEATURES += rtti exceptions

LOCAL_SHARED_LIBRARIES += tbb

LOCAL_CFLAGS += -DTBB_USE_GCC_BUILTINS -std=c++11

APP_ABI := x86

APP_STL := gnustl_shared

Application.mk

System.loadLibrary("gnustl_shared");

System.loadLibrary("tbb");

System.loadLibrary("YourLib");

Java

Page 21: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice22

Media Pack

Media Pack предоставляет код и примеры использования для:

• Захвата видео потока с камеры и экрана

• Редактирования видео

• Включения потокового видео

• Обработки звука

Media Pack поддерживает x86 и ARM устройств на базе Android версии 4.3

http://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials-building-samples

http://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials-running-samples

Page 22: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice23

Захвата видео потока

http://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials-video-capturing-for-libgdx-applications

http://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials-video-capturing-for-opengl-applications

Page 23: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

24

• Анализ производительности в реальномвремени

• Быстрые эксперименты с системныминастройками для локализации проблем сCPU и GPU

• Множество метрик для определения иоптимизации критичного кода

• CPU, GPU, API, RAM, сеть, энергопотребление и т.д.

Intel® Graphics Performance AnalyzersИнструмент системного анализа ОС Android

http://software.intel.com/en-us/vcsource/tools/intel-gpa

Page 24: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Метрики и системные настройки

25

Метрики

BUS/DRAM

CPU

Flash File System I/O

Network I/O

GPU

App Memory

OpenGL API and States

Power

Системные настройки для анализапроизводительности и отладки

1x1 Scissor Rect

Disable Alpha Blending

Disable Alpha Test

Disable Draw Calls

Disable Z-Test

Show Wireframe

Texture 2x2

Hyper Threading Disable

CPU Frequency Override

Page 25: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Инструменты разработки нативных приложений

26

Page 26: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Android* NDK для разработки нативных приложений

27

Зачем он нужен?• Перенос существующего нативного кода с других платформ• Требования к производительности в условиях ограничения на ресурсы,

например, на память• Обработка изображений, сигналов• Алгоритмы симуляции• Прямой доступ к CPU/HW• Оптимизация кода без изменения алгоритма

http://developer.android.com/tools/sdk/ndk/index.html

Page 27: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Совместимость приложений со всеми устройствами

28

myapp.apk

APP_ABI := all Application.mklibs/x86/mylib.so

libs/arm/mylib.so

libs/arm-v7a/mylib.so

libs/mips/mylib.so

libs/?/mylib.so

Page 28: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Специализация опций для разных архитектур

29

libs/x86/mylib.so

libs/arm/mylib.so

libs/arm-v7a/mylib.so

libs/mips/mylib.so

libs/?/mylib.so

ifeq ($(TARGET_ARCH_ABI),x86)

LOCAL_CFLAGS := -mtune=atom -msse3

endif

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)

LOCAL_CFLAGS := -march=armv7-a

Endif

Android.mk

#ifdef __i386__

strlcat(buf, "__i386__", sizeof(buf));

#endif

#ifdef __arm__

strlcat(buf, "__arm__", sizeof(buf));

#endif

source.c

http://software.intel.com/en-us/android/articles/creating-an-x86-and-arm-apk-using-the-intelr-compiler-and-gnu-gcc

Page 29: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

C/C++ компиляторы для Android x86

30

Поддержка x86 включена, начиная с NDK r6• Включал или включает до сих пор

• GCC 4.4.3, GCC 4.6, GCC 4.7, GCC 4.8• Clang 3.1, Clang 3.2, Clang 3.3• ICC 13.1, 14.0• RenderScript*

• Сейчас по умолчанию используется версия 4.6

Page 30: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Рекомендуемые опции GCC

31

Уровни оптимизации -O0, -O1, -O2, -O3, -Os-O0 уровень оптимизации по умолчанию

Настройки и оптимизации для заданных микроархитектур• -march=atom (или –mtune=atom)• -march=slm (или –mtune=slm)

Настройки точности арифметики• -ffast-math• -mfpmath=sse

Другие полезные опции• -flto• -funroll-loops, -funroll-all-loops

EEMBC® CoreMark®

Page 31: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

32

Intel® C/C++ CompilerОптимизация приложений и системы в целом

Высокая производительность

• Простая рекомпиляция может дать прирост производительности

• Совместимость с GNU* GCC компилятором

• Intel® Cilk™ Plus – параллелизм данных и задач

• Поддержка стандартов IEEE 754-2008, С++11

Оптимизации

• Поддержка SSE инструкций от SSE до AVX2

• Автоматическая и полуавтоматическая векторизация

• Межфайловые оптимизации

• Оптимизации с использованием профиля

Page 32: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Рекомендуемые опции Intel C/C++ компилятора

33

Уровни оптимизации -O0, -O1, -O2, -O3, -Os• -O2 уровень оптимизации по умолчанию

• если не включена поддержка отладки –g

• -Ofast, -fast

Настройки и оптимизации для заданных микроархитектур• -xATOM_SSSE3• -xATOM_SSE4.2

Настройки точности арифметики• -fp-model fast=1|2• -no-prec-div

Другие полезные опции-ansi-alias, -ipo

http://software.intel.com/en-us/android/articles/creating-an-x86-and-arm-apk-using-the-intelr-compiler-and-gnu-gcc

Page 33: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

34

Intel® Cilk™ Plus

Page 34: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

35

Intel® Cilk™ Plus

int fib(int n)

{

if (n < 2)

return n;

int x = fib(n-1);

int y = fid(n-2);

return x + y;

}

int fib(int n)

{

if (n < 2)

return n;

int x = cilk_spawn fib(n-1);

int y = fid(n-2);

cilk_sync;

return x + y;

}

Оригинальный код Оптимизированный код

for (int i; i<8; ++i)

{

do_work(i);

}

cilk_for (int i; i<8; ++i)

{

do_work(i);

}

Оригинальный код Оптимизированный код

Page 35: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

36

Intel® Cilk™ Plus

//declaring the function body

__declspec((vector)) double ef_add(double x, double y)

{

return x + y;

}

//invoking the function using array notation

//operations on the whole extent of the arrays a,b,c

a[:] = ef_add(b[:], c[:]);

//use the full array notation construct to also specify n as an extend and s as a stride

a[0:n:s] = ef_add(b[0:n:s], c[0:n:s]);

//use the cilk_for construction to invoke the SIMD-enabled function in data parallel context

cilk_for (i = 0; i<n; ++i)

{

a[i] = ef_add(b[i], c[i]);

}

Page 36: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

37

Intel® Cilk™ Plus

void add_floats(float *a, float *b, float *c, float *d, float *e, int n)

{

int i;

#pragma simd

for (int i; i<8; i++)

{

a[i] = a[i] + b[i] + c[i] + d[i] + e[i];

}

}

http://software.intel.com/en-us/intel-cilk-plus

Page 37: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

40

Оптимизация приложений с Intel® Cilk™ Plus

http://habrahabr.ru/company/intel/blog/202088/

Page 38: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice41

Перенос нативных Android* приложений на x86

• Изменение конфигурации построения (makefiles, файлы конфигурации)

• Перенос C/C++ кода

• Изменение типов данных

• Изменение выравнивания типов данных

• Перенос кода с интринсиками

• Перенос ассемблерного кода

http://software.intel.com/en-us/articles/ndk-android-application-porting-methodologies/

Page 39: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Расположение данных в памятиunion {

struct TestStruct {

int mVar1;

long long mVar2;

int mVar3;

};

int mVar4[6];

} var;

Оригинальный код

union {

struct TestStruct {

int mVar1;

long long mVar2 __attribute__ ((aligned(8)));

int mVar3;

};

int mVar4[6];

} var;

Исправленный код

Page 40: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

ARM* NEON vs. Intel® SSE

43

http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting-solution-tips-and-tricks

// VADD.I8 d0,d0,d0

int8x8_t vadd_s8(int8x8_t a, int8x8_t b);

#ifdef USE_MMX

#define vadd_s8 _mm_add_pi8 //MMX

#else

#define vadd_s8 _mm_add_epi8

#endif

NEONtoSSE.h

Page 41: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Примеры

44

Page 42: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice45

Демо (ffmpeg-2.1.4)

• Минимум внешних зависимостей

• Используется в нескольких проектах

• Простое построение

• configure

• make –j 16 install

http://www.ffmpeg.org

--disable-shared--enable-static--enable-pic--disable-doc--disable-symver--enable-ffmpeg--disable-ffplay--disable-ffprobe--disable-ffserver--disable-avdevice--disable-doc--target-os=linux--arch=atom--enable-cross-compile--cross-prefix=… --sysroot=…

Page 43: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice46

Демо (ffmpeg-2.1.4)Преобразование из формата h265 в формат h264

ICC: 60 sec, FPS 17

• fmpeg_icc -i surfing.265 -t 40 -f mp4 -threads 4 -y /dev/null

GCC: 87 sec, FPS 11

• fmpeg_gcc -i surfing.265 -t 40 -f mp4 -threads 4 -y /dev/null

Опции GCC 4.8:

• -O3 -march=atom -funroll-all-loops -ffast-math -fomit-frame-pointer -mfpmath=sse

Опции ICC 14.0.1:

• -O3 -xATOM_SSSE3 -no-prec-div

Page 44: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice47

Демо (Bouncing balls)

http://software.intel.com/en-us/videos/intel-c-compiler-for-android-5-optimizing-performance-icc-techniques-to-make-your-app-soar

Page 45: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Intel® Developer Zone (IDZ)• Учебные материалы и техническаяподдержка

• Обмен опытом• Специализированные сообщества• Новости из мира технологий

Intel Android* Developer Website• Перенос нативных приложений

• Советы и руководства• Статьи на техническая темы• Форумы и блоги, которые ведутсяинженерами Intel

• Информация о SW/HW продуктах Intel для разработчиков на Android

www.intel.com/software/android

Дополнительная информация

Page 46: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86
Page 47: CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice

Legal Disclaimer & Optimization Notice

INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance ofthat product when combined with other products.

Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries.

Optimization Notice

Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804

50