Articles of performance

Android上的AES解密太慢,无法使用。 NDK会更快吗? 其他想法?

我使用内置的Cipher类在Android上实现了AES / CTR。 对于我的目的来说,解密看起来太慢了,128KB的块在仿真器上需要大约6秒的时间解密,而在三星Galaxy硬件上则需要2.6秒。 我想知道是否使用NDK构buildOpenSSL并调用其方法会更快。 有人对这个有经验么? 我的一部分人想要相信Cipher(“AES / CTR / NoPadding”)方法只是围绕原生OpenSSL调用的一个包装,因为支持Android的Linux操作系统应该安装libcrypto。 如果是这种情况,那么试图使用NDK将只是浪费时间,因为没有预期的性能增益。 我还没有在iOS上花费这么多时间,但即使是3G硬件解密速度如此之快,以至于10MB解密对于最终用户来说似乎是瞬间的。 我发现很难相信,Android的实施是真正的严重程度,但也许这就是现实。 如果这真的是我所面对的,有没有人有任何其他的实施策略的想法,为最终用户提供不可察觉的响应(10Mb文件)? 我办公室里的另一位开发人员用一种tongue suggested的方式build议我只是使用XORencryption,这使我想要面对自己,但是我认为(安全问题抛在一边),如果我这样做,它会工作。 谢谢! 这里有一些简单的代码供参考: public class ResourceDecryptor { private static ThreadLocal<Cipher> mCipher; private byte[] mIV = new byte[ 8 ]; private SecretKeySpec mKey; private String mResourcePath; private static final int kAESBlockSize = 16; public ResourceDecryptor( String resourcePath, String decryptionKey ) […]

findViewById的效率

也许大多数Android开发者知道findViewById不是一个便宜的操作。 我们大多数人知道的另一件事是,您可以通过使用视图层次结构的最小子树来通过其id来查找视图,例如: <LinearLayout android:id="@+id/some_id_0"> <LinearLayout android:id="@+id/some_id_1"> <LinearLayout android:id="@+id/some_id_2"> <TextView android:id="@+id/textview" /> </LinearLayout> </LinearLayout> </LinearLayout> 在这种情况下,您可能需要使用id == @id/textview在LinearLayout进行search 但是,层次结构不是层叠的,而是在各个层面上分支,你想在“叶子”上find意见呢? 你执行findViewById来find父母的分支底部,或者你执行一个更大的子集的findViewById ? 我认为一个简单的答案就是取决于案例,但也许我们可以概括一下它真正依赖于什么? 谢谢 编辑: 对于更大的子集,我的意思是这样的: <RelativeLayout android:id="@+id/r0"> <RelativeLayout android:id="@+id/r1"> <LinearLayout android:id="@+id/some_id_0"> <LinearLayout android:id="@+id/some_id_1"> <LinearLayout android:id="@+id/some_id_2"> <TextView android:id="@+id/textview0" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/some_id_3"> <LinearLayout android:id="@+id/some_id_4"> <LinearLayout android:id="@+id/some_id_5"> <TextView android:id="@+id/textview1" /> </LinearLayout> </LinearLayout> </LinearLayout> </RelativeLayout> <LinearLayout android:id="@+id/some_id_6"> […]

面向Android的Facebook SDK – 首次login非常慢/需要很长时间

我的Android应用程序使用SDK v 3.01与Facebook集成。 使用下面的行login:Session.openActiveSession(m_activity,true,callback); 用户第一次通过应用程序尝试loginFacebook时,需要很长时间才能到达用户需要input的点(用户名/密码)。 我测量了一分钟以上的情况,但~30秒是“正常的”。 这段时间的99%只是在等待Facebook SDK打开Facebooklogin页面。 用户看到一个空白的屏幕与标题栏,我的应用程序的名称,在中心的进度条转动和转动… 重现: 清除我的应用程序的数据 清除Facebook应用程序的数据 运行我的应用程序并执行上面的代码行。 顺便说一句,login过程(如果你可以腾出时间的话)最终会出现,而且以后的login很快。 但大多数用户只是没有得到进度条的白色屏幕,并击中“后退”,因此从来没有loginFacebook。 我想到了以下选项并排除它们: – 使用OAuth实现我自己的login:排除,因为我认为FB不会通过他们的API删除对login的支持 – 在后台执行此过程,只popuplogin活动当它“读”:排除,因为我不认为这是可能的… – 更改代码:排除,因为我找不到更好的login方式… 我的猜测是,无论我做错了什么,或者至less有一个聪明的人在那里解决这个问题。 感谢您的帮助和富有成效的讨论。

哪些是不必要的PhoneGap插件在应用程序中删除?

情景 我有一个小的Android Phonegap / Cordova 2.3.0应用程序,我查看了/res/xml/config.xml文件,发现有很多插件。 这是一个非常小的应用程序,我猜,我正在使用的是通知和ChildBrowser插件。 问题:我想知道删除所有其他插件条目是否安全。 如果是,那么: 1)只是从/res/xml/config.xml足够吗? 2)哪些插件是强制性的(没有它,任何基本的应用程序将无法正常工作)? 例如,第一个(“应用程序”插件),我认为这是必需的? 3)删除插件会提高我的应用程序的速度? 或者更小的安装大小或.apk大小。 有关详细信息,这是我的XML文件的一部分: <plugins> <plugin name="App" value="org.apache.cordova.App"/> <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/> <plugin name="Device" value="org.apache.cordova.Device"/> <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/> <plugin name="Compass" value="org.apache.cordova.CompassListener"/> <plugin name="Media" value="org.apache.cordova.AudioHandler"/> <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/> <plugin name="Contacts" value="org.apache.cordova.ContactManager"/> <plugin name="File" value="org.apache.cordova.FileUtils"/> <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/> <plugin name="Notification" value="org.apache.cordova.Notification"/> <plugin name="Storage" value="org.apache.cordova.Storage"/> <plugin name="Temperature" value="org.apache.cordova.TempListener"/> […]

如何使用Radaee PDF阅读器SDK

我正在开发PDF阅读器应用程序。 我正在使用Radaee PDF阅读器SDK。 我正在尝试这个sdk从Android资产打开PDF。 我需要一些帮助。 我正在使用一些代码,如: m_vFiles = new PDFGridView(this, null); m_vFiles.PDFSetRootPath("/mnt"); m_vFiles.setOnItemClickListener(this); setContentView(m_vFiles); 但它正在采取SD卡的path,并显示所有的PDF文件。 一个用户使用这个sdk。 http://chat.stackoverflow.com/users/1503155/lazy-ninja

Android的Scala的性能

我刚开始学习Scala ,而且我正在度过一生。 今天我也刚刚听说了关于Android的Scala,我完全迷上了。 但是,考虑到Scala就像Java的超集,因为它是Java ++(我的意思是包含更多东西的Java),我想知道Scala代码在Android中的工作原理是什么? 另外,如果用Scala编写,Android应用程序的性能会受到影响吗? 也就是说,如果有任何额外的工作需要解释Scala代码。

Android Listview减慢滚动速度

ListView中的滚动速度对于我的应用程序太快了。 我需要减慢很多。 我无法弄清楚如何做到这一点。 我能在文档中find的唯一的东西是仅在API Level 11中支持的“setFriction”函数,以及不能被覆盖并且没有相应的setter的静态“getScrollFriction”方法。 这里有什么窍门 – 如何控制滚动速度? 谢谢。

阅读SharedPreferences的速度

SharedPreferences有多快? 有没有办法让他们回忆阅读? 我有一个ListView不得不查询显示每个单元格的数据,我担心一个调用闪存将太慢。 我并不担心写入速度,因为写入很less发生。 我正在考虑只使用JSON对象来保存数据而不是SharedPreferences。 思考?

从命令行编译Android项目很慢

我正在编译我的(相当简单,只有5个文件与几百LOC)应用程序从OSX命令行使用: ant debug 有用。 但是它运作缓慢: BUILD SUCCESSFUL Total time: 26 seconds 这是为什么? 即使我只更改一个java文件中的一行,也需要这么多时间。 大部分时间都花在dex阶段(大约20秒),这是AFAIK创buildDalvik字节码。 但是我的朋友也使用Eclipse在Windows上的同一个项目上工作,他说编译在他的机器上只花了一两秒钟的时间。 有什么我可以做的,以加速这一进程?

PhoneGap 1.4包装Sencha Touch 2.X – 性能呢?

我正在构build一个多平台的平板电脑应用程序,使用它的webview包装它与Phonegap 1.4,然后我用Sencha Touch 2框架工作我的魔法。 通过多平台,我的意思是iOS 5.X +和Android 3.0+(现在)。 这个应用程序工作到目前为止,其所有function都在两个系统上工作,但…在Android平板电脑(三星GalaxyTab),它真的很慢。 发生了什么? 我可以做些什么,或者它只是Android的限制吗? 谢谢 Ricardo Perre: http ://edgecodetechology.blogspot.pt/ ****编辑****(我试图让这个post有用的sencha社区) 像许多其他的JavaScript框架,Sencha Touch并不是JavaScript本身的最好的例子。 那么为什么使用Sencha Touch ? 在我的情况下: 多平台 (iOS,Android,Windows Phone,黑莓,Windows,Mac OSX,Linux。共享80-90%的代码) Mitigating performance issues due to lack of visual pre-process in Android systems: CSS3沉重的视觉过程: 避免渐变 避免阴影 避免转换和animation 良好的MVC做法: 不要使用更多的意见,你真的显示 预渲染/预先数据提取尽可能避免渲染和数据处理同时进行 对于任何滚动视图,应在Android上禁用超滚动。 我已经在Android设备上testing了许多Sencha Touch 2应用程序,由于延迟和滞后,过卷会导致严重不愉快的体验。 (在Galaxy Tab,Nexus S和一些HTCs上testing)Thiem Nguyen(我一直在挖掘你的post,抱歉老兄:P)