neon优化-02关于例子和调试方法

1.优化例子

这里才从github上找了个开源的repo,只需要修改几个地方就可以配置arm64-v8的环境了
neon优化的链接

注意这里的repo含有子模块,git clone代码以后需要执行以下命令才可以下载完整的代码

git submodule init
git submodule update

1.1 编译步骤

  • 1.下载ndk最新版本
  • 2.安装cmake
  • 3.安装adb等工具
  • 4.sh build_android.sh进行编译和单元测试

build_android的说明:

set -e
set -x
basepath=$(cd `dirname $0`/; pwd)
BUILD_DIR=${basepath}/build
BUILD_ANDROID_NDK_HOME=/home/ldpe2g/Android/android-ndk-r15c #下载好的ndk的路径
DEPLOY_DIR=/data/local/tmp/ldp #手机上的路径
CMAKE=/home/ldpe2g/Android/cmake-3.11.0-Linux-x86_64/bin/cmake #安装好的cmake的路径
rm -rf ${BUILD_DIR}
if [[ ! -d ${BUILD_DIR} ]]; then
    mkdir -p ${BUILD_DIR}
fi
cd ${BUILD_DIR}
$CMAKE \
-DCMAKE_TOOLCHAIN_FILE=${BUILD_ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=${BUILD_ANDROID_NDK_HOME} \
-DANDROID_ABI=armeabi-v7a with NEON \ # 这里修改成 arm64-v8a
-DANDROID_NATIVE_API_LEVEL=9 \
-DANDROID_TOOLCHAIN=gcc \ #这里修改成clang
-DANDROID_ARM_NEON=TRUE \ #这一行可以删掉 因为64位的arm neon都是支持的
../
make all -j4
adb shell "mkdir -p ${DEPLOY_DIR}/lib"
adb push ${basepath}/build/unit_test/runUnitTests ${DEPLOY_DIR}
adb push ${basepath}/build/src/libboxfilter.so ${DEPLOY_DIR}/lib
adb shell "cd ${DEPLOY_DIR}; export LD_LIBRARY_PATH=./lib ; ./runUnitTests"

这个工程用的是googletest,很容易添加自己的功能和测试代码。。。

1.2 优化效果

[==========] Running 6 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 6 tests from netTest
[ RUN      ] netTest.org_boxfilter
          [0] BoxFilfer Cost time: 1679.91ms
          [1] BoxFilfer Cost time: 1669.2ms
          [2] BoxFilfer Cost time: 1668.06ms
          [3] BoxFilfer Cost time: 1669.61ms
          [4] BoxFilfer Cost time: 1667.7ms
          [5] BoxFilfer Cost time: 1667.84ms
          [6] BoxFilfer Cost time: 1677.63ms
          [7] BoxFilfer Cost time: 1670.87ms
          [8] BoxFilfer Cost time: 1667.56ms
          [9] BoxFilfer Cost time: 1671.46ms

          BoxFilfer Average Cost time: 1670.99ms
[       OK ] netTest.org_boxfilter (17257 ms)
[ RUN      ] netTest.fast_boxfilter
          [0] Fast BoxFilfer Cost time: 341.669ms
          [1] Fast BoxFilfer Cost time: 341.137ms
          [2] Fast BoxFilfer Cost time: 341.387ms
          [3] Fast BoxFilfer Cost time: 340.85ms
          [4] Fast BoxFilfer Cost time: 341.06ms
          [5] Fast BoxFilfer Cost time: 341.151ms
          [6] Fast BoxFilfer Cost time: 341.605ms
          [7] Fast BoxFilfer Cost time: 340.94ms
          [8] Fast BoxFilfer Cost time: 341.17ms
          [9] Fast BoxFilfer Cost time: 340.895ms

          Fast BoxFilfer Average Cost time: 341.186ms
[       OK ] netTest.fast_boxfilter (3958 ms)
[ RUN      ] netTest.fast_boxfilter_v2
          [0] Fast BoxFilfer V2 Cost time: 75.034ms
          [1] Fast BoxFilfer V2 Cost time: 75.52ms
          [2] Fast BoxFilfer V2 Cost time: 75.206ms
          [3] Fast BoxFilfer V2 Cost time: 75.028ms
          [4] Fast BoxFilfer V2 Cost time: 75.324ms
          [5] Fast BoxFilfer V2 Cost time: 74.995ms
          [6] Fast BoxFilfer V2 Cost time: 75.311ms
          [7] Fast BoxFilfer V2 Cost time: 75.237ms
          [8] Fast BoxFilfer V2 Cost time: 75.218ms
          [9] Fast BoxFilfer V2 Cost time: 75.44ms

          Fast BoxFilfer V2 Average Cost time: 75.2313ms
[       OK ] netTest.fast_boxfilter_v2 (1308 ms)
[ RUN      ] netTest.fast_boxfilter_v2_neon_intrinsics
          [0] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.076ms
          [1] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.52ms
          [2] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.959ms
          [3] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.4ms
          [4] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.465ms
          [5] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.367ms
          [6] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.753ms
          [7] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.778ms
          [8] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.297ms
          [9] Fast BoxFilfer V2 Neon Intrinsics Cost time: 72.758ms

          Fast BoxFilfer V2 Neon Intrinsics Average Cost time: 72.5373ms
[       OK ] netTest.fast_boxfilter_v2_neon_intrinsics (1272 ms)
[ RUN      ] netTest.fast_boxfilter_v2_neon_asm
          [0] Fast BoxFilfer V2 Neon Asm Cost time: 73.163ms
          [1] Fast BoxFilfer V2 Neon Asm Cost time: 72.803ms
          [2] Fast BoxFilfer V2 Neon Asm Cost time: 72.829ms
          [3] Fast BoxFilfer V2 Neon Asm Cost time: 73.206ms
          [4] Fast BoxFilfer V2 Neon Asm Cost time: 72.73ms
          [5] Fast BoxFilfer V2 Neon Asm Cost time: 73.08ms
          [6] Fast BoxFilfer V2 Neon Asm Cost time: 72.65ms
          [7] Fast BoxFilfer V2 Neon Asm Cost time: 72.883ms
          [8] Fast BoxFilfer V2 Neon Asm Cost time: 72.85ms
          [9] Fast BoxFilfer V2 Neon Asm Cost time: 72.598ms

          Fast BoxFilfer V2 Neon Asm Average Cost time: 72.8792ms
[       OK ] netTest.fast_boxfilter_v2_neon_asm (1275 ms)
[ RUN      ] netTest.fast_boxfilter_v2_neon_asm_v2
          [0] Fast BoxFilfer V2 Neon AsmV2 Cost time: 62.454ms
          [1] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.037ms
          [2] Fast BoxFilfer V2 Neon AsmV2 Cost time: 62.932ms
          [3] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.445ms
          [4] Fast BoxFilfer V2 Neon AsmV2 Cost time: 62.876ms
          [5] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.137ms
          [6] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.33ms
          [7] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.589ms
          [8] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.07ms
          [9] Fast BoxFilfer V2 Neon AsmV2 Cost time: 63.237ms

          Fast BoxFilfer V2 Neon AsmV2 Average Cost time: 63.1107ms
[       OK ] netTest.fast_boxfilter_v2_neon_asm_v2 (1177 ms)
[----------] 6 tests from netTest (26247 ms total)

[----------] Global test environment tear-down
[==========] 6 tests from 1 test suite ran. (26248 ms total)
[  PASSED  ] 6 tests.

2. 通过adb shell 进行gdb调试的方法

  • 在terminal中执行下面的脚本就可以在手机端开启一个服务,port=5039
DEPLOY_DIR=/TEST_ALGO #手机上要存放的测试数据
HOST_GDBSERVER=${BUILD_ANDROID_NDK_HOME}/prebuilt/android-arm64/gdbserver/gdbserver
HOST_GDB=${BUILD_ANDROID_NDK_HOME}/prebuilt/linux-x86_64/bin/gdb
HOST_APP=./algo/sample_test #编译的本地可执行sample

TARGET_APP=${DEPLOY_DIR}/sample_test
TARGET_GDBSERVER=/data/app/gdbserver
PORT=5039
adb forward tcp:${PORT} tcp:${PORT}
adb push ${HOST_GDBSERVER} ${TARGET_GDBSERVER}
adb shell ${TARGET_GDBSERVER} :${PORT} ${TARGET_APP}
  • 在电脑上另开一个terminal输入下面的命令,就可以开始调试了
${BUILD_ANDROID_NDK_HOME}/prebuilt/linux-x86_64/bin/gdb ./sample_test #进入gdb调试交互界面
target remote:5039 # 在gdb 交互界面中输入,可以调试服务端的程序

由于理解的不全面,所以上面的描述也许不准确,但是按照上面的步骤是可以正确在adb 中进行gdb调试native c/c++的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: eclipse-jee-neon-3是一款基于Java的集成开发环境(IDE),它是Eclipse IDE的一个版本。Eclipse IDE是一个广泛使用的开发工具,可以用于开发各种类型的应用程序。 "Eclipse-jee"表示这个版本主要针对Java Enterprise Edition(Java EE)的开发,该平台提供了一组技术和API,用于开发企业级Java应用程序。与传统的Java SE(Java Standard Edition)相比,Java EE提供了更多的功能和工具,以满足企业级应用程序的需求。 "Neon"是Eclipse IDE的开发代号,代表这个版本的发布间。Neon是Eclipse IDE的第四个主要版本,它于2016年发布。 "Eclipse-jee-neon-3"是基于Neon版本的Java EE开发工具的第三个修订版。这意味着该版本修复了之前版本中存在的一些错误和问题,并且还可能提供了一些新的功能和改进。 使用eclipse-jee-neon-3,开发者可以创建、编辑和调试Java EE应用程序。它提供了许多有用的功能,如自动代码补全、语法高亮显示、调试器、版本控制集成等。此外,它还支持许多其他技术和框架,如Servlet、JSP、EJB、JPA等。 总之,eclipse-jee-neon-3是一个功能强大的Java EE开发工具,可以帮助开发者轻松地构建和调试企业级Java应用程序。 ### 回答2: eclipse-jee-neon-3是一个流行的集成开发环境(IDE),用于开发JavaEE(Java企业版)应用程序。它是Eclipse Foundation开发的,并通过开放源代码方式进行发布。 这个版本的Eclipse-JEE-Neon-3是Eclipse Neon系列的第三个服务版本。Neon是Eclipse的第四个同发布的版本,专注于提供Java开发工具的最新和最先进的功能和性能。 Eclipse-JEE-Neon-3提供了广泛的功能,以帮助开发者更轻松地构建和调试企业级应用程序。它支持许多JavaEE技术,如Servlets、JavaServer Pages(JSP)、JavaBeans、Enterprise JavaBeans(EJB)、Java Persistence API(JPA)等。它还集成了许多其他的开发工具,如Git、Maven、JUnit等,使开发者能够更加高效地进行版本控制和测试。 Eclipse-JEE-Neon-3还具有插件式的架构,允许开发者根据自己的需求进行定制和扩展。开发者可以安装各种插件来增加不同的功能和工具,以满足他们特定的开发需求。 此外,Eclipse-JEE-Neon-3还具有友好的用户界面,提供了易于使用和导航的功能。开发者可以通过简单的拖放操作来创建和管理项目,轻松地导航代码和资源,方便地查找和修复错误。 总而言之,Eclipse-JEE-Neon-3是一个强大而全面的开发工具,专门用于构建Java企业级应用程序。它提供了丰富的功能和工具,使开发者能够高效地进行开发和调试,并能够满足不同的需求和要求。 ### 回答3: Eclipse-jee-neon-3是一个用于开发Java Enterprise Edition(JEE)应用程序的集成开发环境(IDE)。它是Eclipse IDE的一个版本,专门针对JEE开发进行优化和扩展。 对于Java开发人员来说,Eclipse-jee-neon-3是一个非常有用的工具,它提供了一系列强大的功能和特性。其中包括代码编辑器、调试器、编译器、版本控制、自动完成、语法高亮等等。它还支持各种JEE相关的技术和框架,如Servlet、JSP、EJB、JSF等。 通过Eclipse-jee-neon-3,开发人员可以方便地创建JEE项目,并且能够自动为项目生成基本的代码结构。它还提供了一系列工具和插件,用于简化开发过程,如界面设计器、数据库连接器、Web服务器集成等。 除了常规的代码开发功能外,Eclipse-jee-neon-3还提供了一些用于优化代码质量和性能的工具。例如,它可以帮助检测和修复代码中的错误,提供代码建议和重构提示。此外,它还可以进行代码分析和性能测试,并提供相应的报告和建议。 Eclipse-jee-neon-3还支持与其他开发工具和框架的集成。例如,它可以与Maven、Ant、Git等工具进行无缝协作,方便进行项目构建和版本管理。同,它还可以与常见的应用服务器集成,如Tomcat、WebSphere、JBoss等,方便部署和调试应用程序。 总之,Eclipse-jee-neon-3是一个强大而且功能丰富的开发工具,非常适合开发Java Enterprise Edition应用程序的开发人员使用。通过它,开发人员可以更快速、高效地开发和调试应用程序,提高开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值