首页 文章 精选 留言 我的

精选列表

搜索[优化],共10000篇文章
优秀的个人博客,低调大师

【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具

什么是TraceView?先看下百度出来的解释吧: Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。 关于Traceview的使用 首先,必须在程序当中加入代码,以便生成trace文件,有了这个trace文件才可以将其转化为图形。 要添加的代码如下: Java代码 // start tracing to "/sdcard/yourActivityTrace.trace" Debug.startMethodTracing("yourActivityTrace"); // ... // stop tracing Debug.stopMethodTracing(); // start tracing to "/sdcard/yourActivityTrace.trace" Debug.startMethodTracing("yourActivityTrace"); // ... // stop tracing Debug.stopMethodTracing(); Google Dev Guide当中说可以在activity的onCreate()中添加Debug.startMethodTracing(), 而在onDestroy()中添加Debug.stopMethodTracing(),但是在实际的测试时发现这种方式其实并不好用,因为通常情况下我们的activity的onDestroy()是由系统决定何时调用的,因此可能等了很长时间都不会得到这个trace文件。因此决定在onStop()中来调用Debug.stopMethodTracing()。这样当我们切换到其它activity或者点击home键的时候onStop()就会被调用,我们也就可以得到完整的trace file。 在运行程序之前,首先要保证我们的AVD是一个带有SD card的AVD,这样才能使trace文件保存到/sdcard/...当中。运行后可以任意做一些操作,然后点击home键。这是通过DDMS file explore就可以看到/sdcard/目录下有一个trace文件,现在把这个文件copy到电脑上指定的目录,假设是C:/tracefile 目录下。 可以通过命令行来执行traceview,进入tools目录后,执行 traceview C:/tracefile/yourActivityTrace.trace 之后就可以看到图形了,接下来就是按照Google Dev Guide中的解释去分析图形就OK了。 下面来看如何实现以及需要注意的地方: 实现的步骤分为三步:1.必须先在我们的模拟器中创建sdCard ;2.将我们的调试代码嵌入工程;3.利用TraceView来观察和分析代码情况; 1.对于创建模拟器的sdCard这里写出两种方式: 第一种:我们在eclipse中创建avd的时候的时候 在选择api下面有个 Sd Card 的选项,第一项填入创建sdcard的大小即可。 第二种:cmd 命令! 打开cmd 并且cd 到android sdk tool 路径下;(或者在环境变量Path中将sdk tool路径配置上,然后重新打开cmd) 使用mksdcard -l mycard 1024M F:/mysdcard.img创建了一个1G的sdcard; 使用emulator -avd my_android -sdcard F:/mysdcard.img激活sdcard! 最后在eclipse Preferences-->Android-->Launch加入-sdcardF:/mysdcard.img (此步骤就是在第一种创建方式中添加sdcard的支持) 备注1: 如果sdcard分配的空间太小,则程序追踪文件就一直记录到sd储蓄卡容量慢为止,所以调试前,要为程序生成一个适当的SD存储卡也较为重要,因为程序运行时间越长,这个追踪文件也就越大。 备注2; (如果第二种创建方式中的第二部激活出现 emulator: ERROR: the user data image is used by another emulator. aborting,请关闭模拟器,或者进入目录:/Documents and Settings / 用户 / .android /的AVD / *设备* / (比如我的目录是:C:/Documents and Settings/Administrator/.android/avd/android2.0.avd)然后删去以.lock结尾的文件夹就行(我简单解释下为什么要删除这些文件呢,其实.lock是加锁,如果程序崩溃等原因导致无法清除这些以.lock结尾的文件夹,就会出现这个问题,也就是这个avd的锁没有被释放,导致avd manager以为这个avd正在使用当中。)) 2.将我们的调试代码嵌入工程 正如我们百度到的说明一样,在程序运行的开端加上 Debug.startMethodTracing("yourActivityTrace"); 然后在onPause()中调用Debug.stopMethodTracing(); 为什么要将结束写在onPause()中而不写在onStop(),那么如果你去看api的话,你会看到,Api中介绍onPause()会在你返回和点击home按键后触发,而onStop()一般是由系统来触发,当该程序处于后台的时候,而且当内存紧张的时候,可能会调用,但是可能永远不会调用到! 备注:要记住当把调试代码加入项目中以后不要立即运行项目,而是必须在AndroidMainfest.xml中定义一条"写入SD卡的权限"那么添加权限的代码如下: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 因为咱们的调试代码会在SD卡中生成一个追踪文件,也就是往SD卡中写入了数据,所以需要声明一条权限。这里必须注意哦! <?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.himi" android:versionCode="1" android:versionName="1.0"> <applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> <activityandroid:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-sdkandroid:minSdkVersion="4"/> </manifest> 3.运行项目并且退出项目从而得到的追踪文件,利用TraceView来进行分析代码运行状况: 打当正常运行了项目并且点击返回或者home按键就会在 sdcard中生成一个.trace的文件。sdcard 目录 在eclipse下,点击: windows-show view-other-android-File explorer 右上角的两个箭头,第一个表示从模拟器sdcard导出文件,第二个表示从PC上导入文件到sdcard中、“—”代表删除 ..... 然后我们通过cmd来运行生成的追踪文件traceview C:/name追踪文件所在的路径放在C盘,放在C盘以外别的盘的话我这里是无法正常打开traceview的不知道什么原因。 name 表示生成的.trace文件,cmd的时候不需要输入“.trace”后缀 ;然后会出现TraceView的分析窗口; 【cmd 命令! 打开cmd 并且cd 到android sdk tools 路径下;(或者在环境变量Path中将sdk tool路径配置上,然后重新打开cmd)】 注意1:如果出现一下图片这种内存溢出的问题; 解决方法:到SDK 下的tools 下 找到 traceview.bat 文件,鼠标右键-编辑(或者记事本打开),最后一行替换成这样: call java -Xms128m -Xmx512m -Djava.ext.dirs=%javaextdirs% -jar %jarpath% %* 注意2:如果出现路径不对的问题: 例如:我的 himi.trace 放在了C盘,那么我的cmd命令是: traceview c:/himi 然后回车! 但是这里要小心,因为 /h 这样可能被认为是转义字符!!!为了避免可以尽可能不要使用h,n,r,t,等等成为名字的头字母,当然还有一种就可以完全避免这种问题,例如还是我的C盘 himi.trace 文件,可以写cmd命令的时候写成: traceview c://himi 嘿嘿~要注意细节。 下面是运行起来的TranceView: 最右上角表示运行程序总共用了多少时间,从traceview画面中我们看到有各种颜色,每种颜色代表不同的函数和步骤,那么同一颜色的区域越大,就代表这个步骤运行时间越长,或者看到下面的统计表,明显可以看出除了序列 0 1 是系统函数外,2. 3.函数 占用的时间比较长,那么序列4是个自定义的函数名为 “hot”这个占用了几乎与主线程 主draw的时间一样了,那么肯定有问题。当然其实这个方法是我故意写的,就是为了来演示traceview。这个hot函数的代码如下: /** * @author Himi * @param canvas */ public void hot(Canvas canvas) { for (inti=1; i<100; i++) { Bitmapbmp=BitmapFactory.decodeResource(getResources(), R.drawable.icon); canvas.drawBitmap(bmp, i += 2, i += 2, paint); } } 很明显我在故意消耗内存和时间。 那么,在traceview的右半部统计字段中: Exclusive: 同级函数本身运行的时间 Inclusive 就是说除统计函数本身运行的时间外再加上调用子函数所运行的时间 Name:列出的是所有的调用项,前面的数字是编号,展开可以看到有的有Parent 和Children子项,就是指被调用和调用。 Incl: inclusive时间占总时间的白分比 Excl: 执行占总时间的白分比。 Calls+Recur Calls/Total: 调用和重复调用的次数 Time/Call: 总的时间。(ms) 所以traceview是个非常好的程序监视工具,可以帮助找出程序运行缓慢时的函数,让我们的代码不断完善和改进! 本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/606325,如需转载请自行联系原作者

优秀的个人博客,低调大师

基于阿里的Node全栈之路(二)阿里负载均衡的HTTPS优化方案

很多时候,我们习惯了自己做负载均衡,自己部署nginx,甚至是自己在代码里实现https。没错这些还是蛮能锻炼动手能力的,但重复造轮子这个话题~ 我的主题都是基于阿里云,所以默认各位看官都是用了阿里云的,既然是已经上云了,我觉得上云后的公司更应该是把精力放在业务上,其它方面交给云去处理。 不是我想要去夸阿里云,我自己也是考虑过换云的。今年3月份还是4月份的时候,阿里云在深圳的网络波动,导致我平台上几千个订单提交失败。合作方问我发生了什么事情,后来发现是深圳服务器的网络问题。那个时候,我就很郁闷,在朋友圈也发过类似“看来要迁移到XX云上了”。现在还在写这篇文章,大家就知道了,我没迁,我花了一个月的时间试了国内大部分的云,华为云和腾讯云我都试过了,还有百度云,甚至一些偏门的云都试了一遍,具体就不比较了,有兴趣的童鞋可以私聊我,我看下是否要出一篇文章来对比这些平台。 嗯,上面扯偏了,现在来聊下负载均衡~ 结构 简单吧?自己的业务完全不考虑https的存在,把https的解析交给负载均衡就好了,有啥好处呢? 价格更便宜,比部署在自己的ecs上,具体我就不算了,像我这种个人开发者,那是一毛钱都要精打细算的。(如果大家对怎么节省费用很在意的话,我可以再出一篇精打细算阿里云过日子的方法。) 稳定性和可靠性高 部署 准备工作 申请https,在 阿里云盾 就可以申请到免费的https,如果没部署过https的话,最好还是用免费的先试试,那个审核很快的,我曾经半夜1点多买了免费证书提交审核,半个小时,竟然审核成功了(orz,让我怀疑这是真人审核吗?如果是真的,阿里的童鞋也太勤奋了吧(orz 下载证书,在云盾界面有个 下载证书for Nginx 字样的按钮,就是它了! 把刚刚写在的东西,解压后用文本打开(pem就是证书内容,key就是秘钥),然后在在阿里云负载均衡添加证书。 接下来的操作流程,阿里有文档了。

优秀的个人博客,低调大师

空间索引(GiST、BRIN、R-Tree)选择、优化 - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , Greenplum , PostGIS , GiST , R-Tree , BRIN , 相关性 , 网格 , BOX , K-Mean 背景 空间数据的搜索需求通常包括: 1、平面、三维、多维对象 几何相交、不相交、相邻。 2、平面、三维、多维对象的方位判断(相交或严格在左边、右边、上边、下边),类似数值的大于、小于、大于等于、小于等于。 3、平面、三维、多维对象 包含 另一个对象 4、平面、三维、多维对象 等于 另一个对象 5、平面、三维、多维对象 与另一个对象的(边、最近、中心点的)距离,按距离排序输出满足条件的行,输出距离在XX以内的行。 操作符如下 http://postgis.net/docs/manual-2.3/reference.html#Operators && — Returns T

优秀的个人博客,低调大师

Forrester:AI 科技与商业严重脱节,系统优化才是企业 AI 应用之道

新兴的科技受到追捧是社会进步的体现,然而商业对新兴科技的吸收需要一个不断磨合的过程。人工智能让人们看到了其巨大的潜力,但应该如何体现其商业价值,如果使其落地于各个商业场景,如果让开发人员有效地衔接,都成为了企业决策者需要思考的问题。新智元就 AI 在企业中的应用问题采访了弗雷斯特研究公司首席分析师(企业架构方向)戴鲲先生。弗雷斯特研究公司(Forrester Research)是全球最大的第三方市场研究机构之一,主要为企业和公众提供商业科技和市场战略方面的洞见和咨询。 “在我们的企业客户中,有越来越多的人在关注AI科技可能对企业带来的改变”,戴先生告诉新智元记者。据弗雷斯特 2016 年的一份报告显示,在其在全球范围内在线调查的391个商业和科技决策者中,有58%的人表示正在研究企业应如何应用人工智能(包括市场、方案、平台、提供商、

优秀的个人博客,低调大师

超详解析 | CDN HTTPS优化实践,全网一分钟生效

目前主流网站都依赖 HTTPS(HTTP over TLS/SSL)实现服务器认证、数据加密和完整性保护,比如2015年阿里巴巴旗下所有网站就完成全站HTTPS化;同时主流网站也普遍使用CDN技术用以提高网站的性能、可靠性和安全性。目前,HTTPS和CDN技术几乎都已成为商业网站必须的基础服务。 然而长期以来,HTTPS和CDN两种技术的设计和发展是独立的,HTTPS 设计之初是一种端到端(End-to-End)的协议,而CDN却是以中间人(Man in the Middle)的方式工作。原始网站是如何授权给中间的CDN厂商、如何完成浏览器 - CDN - 原始网站之间的身份认证、秘钥交换和数据保护,以及如何撤销这种授权,无论学术界还是工业在以前都没有没有系统性的考虑。 总的来说HTTPS是未来的趋势。它的应用会越来越广泛,CDN也就

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册