Kompiluję kod natywny przy użyciu cygwin i Windows7. Mam wiele porad dotyczących optymalizacji w Internecie.Jak zoptymalizować natywny kod za pomocą android-ndk (Optymalizacja prędkości)
Nie mogę jednak dokładnie zrozumieć, jak ustawić te ustawienia w aplikacjach Application.mk i Android.mk. Próbowałem wielu przypadków, stosując powyższe wskazówki. , ale nie sądzę, że optymalizacja jest stosowana w moim natywnym kodzie.
Application.mk
APP_PROJECT_PATH := $(shell pwd)
APP_MODULES := native_lib
APP_OPTIM := release
APP_BUILD_SCRIPT := Android.mk
APP_ABI := armeabi
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := crypto
LOCAL_SRC_FILES := lib/libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := native_lib
LOCAL_SRC_FILES := nativeC.c \
AES/main.c \
AES/aes.c \
LOCAL_C_INCLUDES := ./lib
LOCAL_SHARED_LIBRARIES := crypto
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp
LOCAL_LDLIBS += -ldl
include $(BUILD_SHARED_LIBRARY)
Mam nadzieję, że wiele komentarzy.
Ponadto
Najpierw starałem się porównać z przypadków między powyższym flagi i bez niego. (np. skompilowałem swój program za pomocą APP_OPTIM: = release w Application.mk, a następnie skompilowałem go bez niego lub z APP_OPTIM: = debug, znowu.) Ale nie widzę żadnej zmiany prędkości biegu.
Po drugie, to jest najważniejsze, mój program porównuje prędkość dwóch modułów. (Dla wygody nazywam je modułem A, B) Moduł A jest wstępnie zbudowany (co jest biblioteką libcrypto.so w Android.mk). I chcę zastosować optymalizację do Modułu B. Po pierwsze, porównałem test prędkości modułów A i B na PC (Visual Studio 2010). Kiedy wypróbowałem moduł A i B na PC, moduł B jest szybszy niż A. (Oczywiście, skompilowałem moduł A i używam go, wywołując bibliotekę.) Teraz przenoszę do niego mój program na PC dla Android. Ale w systemie Android moduł B jest zbyt wolny niż A.
Dlatego też doszedłem do wniosku, że nie jest to zoptymalizowane.
Podsumowując,
- porównałem prędkość pomiędzy z flagą i bez niego.
- Po uruchomieniu tego programu na komputerze, prekompilowany moduł A jest szybszy niż B, ale w systemie Android jest zupełnie odwrotnie.
Czy zastanawiasz się, jaki jest problem mojego programu? Z góry dziękuję.
Jak rozpoznać, że skompilowany kod nie jest zoptymalizowany? – krsteeve
Dodałem szczegóły w poniższej odpowiedzi. (Dodatkowo ...) – user2642459
możesz edytować swoje pytanie z większą ilością szczegółów, nie powinieneś udzielać odpowiedzi, która w rzeczywistości nie jest odpowiedzią. – krsteeve