为了进一步裁剪tbox,更好的适配嵌入式开发平台,tbox新增了--micro=y的微模块编译选项
如果启用此编译选项,那么只会编译tbox里面较轻量的一些模块,是的编译后的库大小,尽量保证在64K左右。
先来讲讲一些跟库大小相关的编译选项:
* `--smallest=y`: 通用平台,最小编译模式,会禁用所有第三方依赖库,禁用所有扩展模块,启用最小化编译优化(库内部也会尽可能节省内存使用)
* `--micro=y`: 专门针对嵌入式平台设计,仅编译最为轻量的一些模块,启用最小化编译优化(有可能会包含一些可选组件)
smallest和micro的区别在于,即使启用了smallest禁用所有扩展模块,但是还是会内置比m
继续阅读 »
为了进一步提升构建效率,减少没必要的重建,xmake新增了对头文件的依赖检测,以及自动构建仅仅需要重新编译的源文件,提升编译速度,并且完全支持windows、linux、macosx等大部分平台。。
由于检测过程本身也会有一些性能损耗,因此xmake对此进行了深度优化,实现极速依赖检测:
对依赖头文件进行过滤,如果是系统头文件,非自身项目的第三方头文件,自动忽略,这些头文件基本上不会再开发项目的时候,经常变动,所以没必要去每次检测他们,如果真有变动,手动重建下就行了
针对每个头文件的检测结果进行缓存,直接应用到下一个源文件上,减少重复检测的次数
其他一些细节优化
继续阅读 »
一直以来,我们都在各种场合、各种文章中看到避免使用 RelativeLayout、避免使用过多的 layout 嵌套,因为它们存在很大的性能开销。开发的过程中也确实在留意这一点,然而每每编写 layout 文件时,都会怀疑,这样或者那样,到底会变快,还是变慢?本文就针对简单的 layout 和复杂的 layout,是否使用 RelativeLayout 的性能进行了测试,此外,还对最近很火的 FlexLayout{:target="_blank"} 也进行了测试。测试代码和测试结果数据都可以在 Github 获取{:target="_blank"}。
继续阅读 »
1. 超参数
到目前为止,已经涉及到了许多个超参数:
学习速率 $\alpha$
Momentum优化算法的 $\beta$
Adam优化算法的 $\beta_1,\beta_2,\epsilon$
网络层数 $L$
每个隐藏层的神经单元个数
学习率衰减 $decay\text{-}rate$
$batch\text{-}size$
继续阅读 »
有过网站优化经验的都知道,减少请求的页面大小可让网站速度变更快,这里我们可以利用Nginx自带的Gzip模块来实现优化
Gzip(GNU-ZIP)是一种压缩技术。经过Gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多。Gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的巨大多数浏览器都支持解析gzip过的页面。 Nginx的压缩输出有一组gzip压缩指令来实现。相关指令位于nginx.conf 的http{….}两个大括号之间。
继续阅读 »
之前在给xmake做构建的效率优化的时候,需要对lua脚本的api调用性能进行分析,分析出最耗时一些lua调用api,
找出性能瓶颈,来针对性地进行优化,那么问题来了,如果对lua脚本像c程序那样进行profile呢?
我们现在看下最后实现完的最终效果:
4.681, 98.84%, 1, anonymous : actions/build/main.lua: 36
3.314, 69.98%, 1, anonymous : actions/build/main.lua: 66
3.314, 69.98%,
继续阅读 »
content
{:toc}
本文主要说明对这个博客主题的改版和代码重构的过程。这个简洁高雅的博客主题受到了很多朋友的喜欢。在写第一版界面时,我对前端并不是很熟悉,对Jekyll也不熟悉。现在距离当时也一年了,对自己当时写的代码也不太满意了,同时Jekyll如今也已经升级了,目前最新版为3.1.2。因此我在临近毕业尚未入职前做一下博客主题的代码重构和改版吧。
主要想做这些事情有:添加归档,添加标签,添加分类页面,主页显示文章摘要,代码去除 jQuery 和 BootStrap,优化移动端显示,将所有变量写入配置文件_config.yml中等。再优化一些细节吧。希望更多人会喜欢。
继续阅读 »
界面优化
需要注意的点总结如下
采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。
继续阅读 »
训练阶段我们采用了分批处理,可以优化部分内存。
原先我们的代码使用一次性载入数据,然后开始若干次迭代,直至收敛。这样保存image与shape的数据矩阵Data就一直占用内存,但实际上,数据集的image与shape 的作用仅仅是计算$\Delta X$和$\Phi$,两变量的定义参考《 Supervised Descent Method and its Applications to Face Alignment》,其实也就是init shape与true shape的差值以及init shape的特征向量。计算完了,Data就没用了。于是我们设想分批处理,每次迭代载入一次数据,用完了就clear。这样就需要载入多次,可能时间上
继续阅读 »
上一篇文章简单介绍了 Source Map,接下来我们来看看如何利用各种工具来生成 Source Map。
什么是 Source Map?
Source Map 提供了一个与语言无关的方式,来将生产环境中的代码映射回开发环境中的原始代码。
在现代的开发流程中,我们的开发环境和实际线上环境的代码通常都不一样。在应用上线部署前,我们通常都要对我们的代码进行编译、合并、压缩或者其他方面的优化,这使得我们非常困难来准确定位会原始代码。但是,在生成过程中,Source Map 文件储存了这些位置信息,因此,当我们查找一行中的某个位置时,Source Map 文件可以准确定位到原始文件中的位置。这使得我们线上环境中的代码变得可读,甚至可调
继续阅读 »