学习

来源:互联网 发布:淘宝宝贝如何优化 编辑:程序博客网 时间:2024/05/29 02:56

11111111111111111111http://www.cnblogs.com/jiayy/p/4282123.html----android hook

Linux系统的ptrace机制-------进程跟踪机制


MSIL(Microsoft Intermediate language)微软中间语言----反汇编



22222222222222222 http://blog.csdn.net/sahadev_/article/details/52416345 android 官方开发文档training系列课程中文版:性能优化建议

--android官方文档:性能优化建议

合理复用已有的对象

JIT(即时编译器)----(just-in-time  compiler)即时编译器

----------------------

返回的字符串的方法,该方法返回的字符串总是被接在一个stringbuffer对象后面、

更改为直接跟在stringbuffer的后面返回


Stringbuffer sbf = new string buffer();

System.out.printin(sbf.capacity())-----16--------系统自动分配容量,默认是16个字符。

System.out.println(dbf.llength())--------0---因为没有赋值,缓冲对象的长度是0

------------------------

如果不需要访问对象的属性,就可以将方法设置为静态方法。这样调用会增加15%-20%的速度

static int a = 42;

static  final int a =42;


----------------------------------------------------------------

C++用get/set 因为编译器通常会进行内联访问

android最好是可以直接访问对象的字段

内联扩展是用来消除函数调用时的时间开销

(内联函数是指inline关键字修饰的函数。在类内定义的函数被默认成内联函数)

(内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质)


/*

最后我来总结一下inline的注意事项:

1、内联函数类似宏替换的方式来实现,我们可以看出这其实是用空间换时间的一种做法,仅仅省去了函数调用的开销,所以提高了函数执行效率。所以执行函数体内代码的时间相比教育函数调用的时间开始较大的时候,我们不宜用内联函数。

所以,再有if语句或switch语句或者递归语句时,我们通常不使用内联函数。内联函数只适合于只有1~5行的小函数。

2、内联函数的定义必须出现在内联函数第一次调用之前。

3、关键词inline必须与函数定义体放在一起才能使函数成为内联,仅将inline放在函数声明前并没有用。


*/

内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内敛函数,需要看编译器对该函数定义的具体处理。

对于能否形成内联函数,在C++ primer 中有说过 :内敛说明只是向编译器发出的一个请求,编译器可以选择忽略这个请求。


使用本地方法要当心,如果你需要使用本地代码,读一读JNI tips 


Java native interface。



JNI定义了2个数据结构,java虚拟机和JNIEnv,这两个本质上都是指向函数表的指针

(在c++版本中,他们是2个类,包含了成员函数,这些成员函数都是jni的函数)

JNI定义了2个数据结构, java虚拟机和JNIEnv, 这两个本质上都是指向函数表的指针. (C++版本中他们是2个类包含了成员函数这些成员函数都是JNI的函数.) java虚拟机提供"调用接口"函数它允许你创建和销毁java虚拟机理论上你可以在一个进程里有多个java虚拟机Android只允许1.

JNIEnv提供了大部分的JNI函数C语言里你所有的native函数都要接收JNIEnv作为第一个参数.

JNIEnv用在线程本身的存储这样会导致你不能在多个线程里共享JNIEnv, 如果部分代码没有办法获得JNIEnv, 那么可以把java虚拟机共享通过java虚拟机来获得这个线程的JNIEnv.

C语言声明的JavaVMJNIEnvC++声明的不同, "jni.h"头文件里使用宏定义把CC++的声明作了区别基于这原因JNIEnv作为参数放在头文件里是不好的方式这导致在CC++都用这个头文件时会有很大的麻烦.(也可以这么说如果你的头文件需要定义#ifdef __cplusplus, 那么你必须对这个指向JNIEnv的头文件作一些改动来同时适应CC++语言.




在没有JIT的设备上,通过缓存访问属性要比反复访问属性要快将近20%的速度。在JIT的设备中,属性访问的花销与本地访问的花销基本一致,所以这不是一项有多少价值的优化手段,除非你觉得这样做的话代码更易读(这对static,final,常量同样适用)。


============================================

333333333333333333333333333333JNIJNIJNIJNIJNIJNI

完全看不懂

JNI编程经验(JNI Tips)http://blog.csdn.net/nicebooks/article/details/17925521

=============================================


44444444444444444444444444444444444444444444

搜狗输入法iOS------http://blog.csdn.net/tangxiaoyin/article/details/52415135

1,键盘调起速度,内存,CPU以及swift3

2,JSPatch和React Native的调研---》dispatch(热修复) 

3,FBRetainCycleDetector(Facebook开源的一个内存泄漏检测解决方案)

FastImageCache(Path 团队开发的一个开源库,用于提升图片的加载和渲染速度)的调研

4,从iOS8开始被系统一旦加载,并不能立即释放,而是由系统决定在什么时机释放,且不能完全释放

=========================================================








0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上海离职了社保怎么办 日本瓦斯没交怎么办 半自动咖啡机自动出水怎么办 父母太粘自己怎么办 铜耳环变黑了怎么办 秋田犬爱打架怎么办 僧人建设庙宇资金怎么办 wifi总是掉线怎么办 微博授权失败怎么办 新浪微博被官方封号怎么办 电磁波辐射重度异常怎么办 卖鞋没有生意怎么办 华为手机越来越卡怎么办 华为手机电越充越少怎么办 土炕有裂缝冒烟怎么办 农村土炕不好烧怎么办 夏天土炕不好烧怎么办 怎么办我是个肚脐控 联想笔记本电池显示损坏怎么办 电脑关机没反应怎么办 变色灯坏了怎么办 衣服颜色太艳怎么办 自行车掉链子怎么办图解 南联邦大学怎么办入学 群租公寓业主怎么办 孩子上课不举手怎么办 门颜色太难看怎么办 玛雅水公园下雨怎么办 鱼竿手把节断怎么办 印度出兵马尔代夫中国怎么办 看见死的黄鼠狼怎么办 养的小猫死了怎么办 黄鼠狼遇到危险该怎么办 黄鼠狼打跑了怎么办 出口退税过期了怎么办? 接收不到验证码怎么办 退税单掉了怎么办 新风机噪音大怎么办 新风系统噪音大怎么办 点球大战平了怎么办 意大利护照被抢怎么办