Benchmark

Go单元测试命令

↘锁芯ラ 提交于 2020-08-11 02:47:21
Go 语言推荐测试文件和源代码文件放在一块,测试文件以 _test.go 结尾。比如,当前 package 有 calc.go 一个文件,我们想测试 calc.go 中的 Add 和 Mul 函数,那么应该新建 calc_test.go 作为测试文件。 example/ |-- calc.go |--calc_test.go 假如 calc.go 的代码如下: 1 package main 2 3 func Add(a int , b int ) int { 4 return a + b 5 } 6 7 func Mul(a int , b int ) int { 8 return a * b 9 } 那么 calc_test.go 中的测试用例可以这么写: 1 package main 2 3 import "testing" 4 5 func TestAdd(t * testing.T) { 6 if ans := Add(1, 2); ans != 3 { 7 t.Errorf("1 + 2 expected be 3, but %d got" , ans) 8 } 9 10 if ans := Add(-10, -20); ans != -30 { 11 t.Errorf("-10 + -20 expected be -30, but %d got" , ans) 12 }

请不要在 JDK 7+ 中使用这个 JSON 包了!

白昼怎懂夜的黑 提交于 2020-08-10 21:07:43
来源:大魔王mAysWINd www.cnblogs.com/mayswind/p/9222245.html Json-lib 介绍 Json-lib 是以前 Java 常用的一个 Json 库,最后的版本是 2.4,分别提供了 JDK 1.3 和 1.5 的支持,最后更新时间是 2010年12月14日。 虽然已经很多年不维护了,但在搜索引擎上搜索 " Java Json **"**等相关的关键词发现好像一直还有人在介绍和使用这个库。 项目官网是: http://json-lib.sourceforge.net/ 一句话结论 Json-lib 在通过字符串解析每一个 Json 对象时,会对当前解析位置到字符串末尾进行 substring 操作。 由于 JDK7 及以上的 substring 会完整拷贝截取后的内容,所以当遇到较大的 Json 数据并且含有较多对象时,会进行大量的字符数组复制操作,导致了大量的 CPU 和内存消耗,甚至严重的 Full GC 问题。 问题分析 某天发现线上生产服务器有不少 Full GC 问题,排查发现产生 Full GC 时某个老接口量会上涨,但这个接口除了解析 Json 外就是将解析后的数据存储到了缓存中。 遂怀疑跟接口请求参数大小有关,打日志发现确实有比一般请求大得多的 Json 数据,但也只有 1MB 左右。为了简化这个问题

视频行为理解

六眼飞鱼酱① 提交于 2020-08-10 08:02:01
from:https://x-algo.cn/index.php/2019/08/31/3220/ 行为识别是用来识别“人自身”、“人和人”、“人和物”的“行为”。比如“抽烟”,“打架”。这个任务有好几个数据集,接下来先介绍一下各个数据集。 数据集 HMDB-51(2011) 其中包含51 action,7k clips; 这个数据集合包含不同种类的视频( camera motion, viewpoint, video quality and occlusion) 和以往的数据集比较,这个视频数据更加真实,并且会有遮挡机位变化等。 当前数据集通过 静态的人体关节 变化不能识别对应的行为 51个action中,每一个至少包含101个clip 下图为和其他数据集的对比: 和其他数据集合的对比 数据样例: 点击我 ; 包含的行为种类有: 面部表情:微笑,大笑,咀嚼,交谈 面部和物体行为:吸烟,吃,喝 身体动作:车轮翻,鼓掌,爬 身体和物体之间行为:梳头发,抓东西,击剑 51个种类的分组 论文:H. Kuehne, et al. HMDB: A large video database for human motion recognition. In ICCV, pages 2556-2563, 2011. UCF-101(2012) 101类别,13k样本,27小时时长

一些常用的图像数据库总结

核能气质少年 提交于 2020-08-10 02:24:07
from: https://blog.csdn.net/JIEJINQUANIL/article/details/50341765 1、 Vedio and Image Datasets Index 这个网址提供了大量的视频和图像的数据库下载索引,并有相应的介绍,强烈推荐!大家慢慢去找寻自己的惊喜吧 2、 CV Datasets on the web 这里主要有检测、分类、识别、追踪(tracking)、分割、显著性检测、视频监测……内容特别丰富,强烈推荐! 3、 FIR Sequence. Pedestrian Dataset 里面又有好几种数据库可以下载:CVC Virtual Pedestrian Dataset、CVC-01Pedestrian Dataset、CVC-02 PedestrianDataset一直到09的都有。 4、 Penn-Fudan Database for Pedestrian Detection and Segmentation 用于行人检测的数据库,里面的图片都取材于校园和城市街区,每一幅图片至少有一个行人。 5、 Caltech Pedestrian Detection Benchmark The Caltech Pedestrian Dataset consists of approximately10 hours of 640x480

前端三大主流框架 React、Vue、Angular的对比

那年仲夏 提交于 2020-08-10 02:11:42
一、Angular,它两个版本都是强主张的,如果你用它,必须接受以下东西: 必须使用它的模块机制 必须使用它的依赖注入 必须使用它的特殊形式定义组件(这一点每个视图框架都有,难以避免) 所以Angular是带有比较强的排它性的,如果你的应用不是从头开始,而是要不断考虑是否跟其他东西集成,这些主张会带来一些困扰。 二、React 它也有一定程度的主张,它的主张主要是函数式编程的理念,比如说,你需要知道什么是副作用,什么是纯函数,如何隔离副作用。它的侵入性看似没有Angular那么强,主要因为它是软性侵入。你当然可以只用React的视图层,但几乎没有人这么用,为什么呢,因为你用了它,就会觉得其他东西都很别扭,于是你要引入Flux,Redux,Mobx之中的一个,于是你除了Redux,还要看saga,于是你要纠结业务开发过程中每个东西有没有副作用,纯不纯,甚至你连这个都可能不能忍: const getData = () => { // 如果不存在,就在缓存中创建一个并返回 // 如果存在,就从缓存中拿 } 因为你要纠结它有外部依赖,同样是不加参数调用,连续两次的结果是不一样的,于是不纯。为什么我一直不认同在中后台项目中使用React,原因就在这里,我反对的是整个业务应用的函数式倾向,很多人都是看到有很多好用的React组件,就会倾向于把它引入,然后

最近一篇关于深度学习在地图-定位应用的综述

╄→гoц情女王★ 提交于 2020-08-09 11:42:45
点击上方“ 3D视觉工坊 ”,选择“星标” 干货第一时间送达 整理:公众号@智车科技 本文仅做学术分享,如有侵权,请联系删除。 这是一个arXiv上2020年6月底上传的综述“A Survey on Deep Learning for Localization and Mapping: Towards the Age of Spatial Machine Intelligence“,作者来自英国牛津大学,文章覆盖了odometry、mapping和SLAM等。 这是一个arXiv上2020年6月底上传的综述“A Survey on Deep Learning for Localization and Mapping: Towards the Age of Spatial Machine Intelligence“,作者来自英国牛津大学,文章覆盖了odometry、mapping和SLAM等。 如图给出了传统方法和学习方法的比较:X是传感器数据,Y是目标(运动、姿态和几何+语义等)。 关于深度学习在这个领域的应用,作者给出了如下的分类: 而这里给出综述的全貌,也是以上模块在所构成系统的相互关系图: 这是odometry的方法列表:分视觉、视觉-惯导和激光雷达三个类。 下面这张图告诉我们:非监督方法还是比监督方法误差大,深度学习和传统方法的混合精度不错。 这是mapping的方法列表:

性能调优必备利器之 JMH

雨燕双飞 提交于 2020-08-08 22:53:42
if 快还是 switch 快?HashMap 的初始化 size 要不要指定,指定之后性能可以提高多少?各种序列化方法哪个耗时更短? 无论出自何种原因需要进行性能评估,量化指标总是必要的。 在大部分场合,简单地回答谁快谁慢是远远不够的,如何将程序性能量化呢? 这就需要我们的主角 JMH 登场了! JMH 简介 JMH(Java Microbenchmark Harness)是用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级。该工具是由 Oracle 内部实现 JIT 的大牛们编写的,他们应该比任何人都了解 JIT 以及 JVM 对于基准测试的影响。 当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用 JMH 对优化的结果进行量化的分析。 JMH 比较典型的应用场景如下: 想准确地知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性 对比接口不同实现在给定条件下的吞吐量 查看多少百分比的请求在多长时间内完成 下面我们以字符串拼接的两种方法为例子使用 JMH 做基准测试。 加入依赖 因为 JMH 是 JDK9 自带的,如果是 JDK9 之前的版本需要加入如下依赖(目前 JMH 的最新版本为 1.23 ): <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh

PyTorch应用:用ResNet进行交通标志分类

送分小仙女□ 提交于 2020-08-08 15:41:19
德国交通标志识别基准数据集:可能是自动驾驶汽车领域最受欢迎的图像分类数据集。 自动驾驶车辆需要对交通标志进行检测和分类,以了解应用于路段的交通规则。也许,这个数据集太小而且不完整,无法用于实际应用。不过,它是计算机视觉算法的一个很好的baseline。 数据集链接: [http://benchmark.ini.rub.de/?section=gtsrb&subsection=about] ▌数据集 数据集由两部分组成:训练集和测试集。 训练集包含39209张交通标志图片, 共分为43类,例如停车标志,自行车穿越和速度限制30 km / h。 德国交通标志识别数据集图像的例子 数据集的样本类别非常不均衡(imbalanced)。 例如,“速度限制(50 km / h)”符号有1800个样本,但“危险曲线向左”符号只有168个。 测试集具有12630张图片。2011年IJCNN就是用这个数据集进行了一场比赛. 您可以从官方网站下载数据集。 http:// benchmark.ini.rub.de/? section=gtsrb&subsection=dataset ▌实验方法 我尝试使用在ImageNet数据集上预训练的ResNet34卷积神经网络来进行迁移学习。 我在fast.ai最新版本的“ 深入学习编码器 ”课程中学到了解决计算机视觉问题的方法

深入理解编译优化之循环展开和粗化锁

徘徊边缘 提交于 2020-08-08 00:47:53
简介 之前在讲JIT的时候,有提到在编译过程中的两种优化循环展开和粗化锁,今天我们和小师妹一起从Assembly的角度来验证一下这两种编译优化方法,快来看看吧。 循环展开和粗化锁 小师妹:F师兄,上次你讲到在JIT编译的过程中会进行一些编译上面的优化,其中就有循环展开和粗化锁。我对这两种优化方式很感兴趣,能不能展开讲解一下呢? 当然可以,我们先来回顾一下什么是循环展开。 循环展开就是说,像下面的循环遍历的例子: for (int i = 0; i < 1000; i++) { x += 0x51; } 因为每次循环都需要做跳转操作,所以为了提升效率,上面的代码其实可以被优化为下面的: for (int i = 0; i < 250; i++) { x += 0x144; //0x51 * 4 } 注意上面我们使用的是16进制数字,至于为什么要使用16进制呢?这是为了方便我们在后面的assembly代码中快速找到他们。 好了,我们再在 x += 0x51 的外面加一层synchronized锁,看一下synchronized锁会不会随着loop unrolling展开的同时被粗化。 for (int i = 0; i < 1000; i++) { synchronized (this) { x += 0x51; } } 万事具备,只欠我们的运行代码了,这里我们还是使用JMH来执行。

Redis实用小功能

倾然丶 夕夏残阳落幕 提交于 2020-08-07 19:39:15
慢查询分析 配置slowlog-log-slower-than和slowlog-max-len解决这两个问题,redis会记录超过该阈值的查询日志; 低OPS下设置慢查询10ms、高OPS下设置慢查询1ms 注:Redis慢查询日志仅记录命令执行时间,不包含排队及网络传输时间 redis实用运维命令: redis --bigkeys 对占用内存大的键值对采样 redis --latency 检测网络延时 redis--cli -h …… --latency redis --latency-history 分时段了解延迟 redis --latency-dist 统计图表从控制台输出统计信息 redis --stat 获取增量数据 redis-server --test-memory 检测内存 redis-benchmark redis基准性能测试 pipeline:批处理命令通过减少RTT往返时间,减少网络I/O上的延时。 Redis通过Lua脚本的进行事务增强 Bitmaps(位运算):通过对字符的位进行操作记录某些boolean值,以减少内存空间。 HyperLogLog(基数运算):在极小空间内完成独立总数的统计 来源: oschina 链接: https://my.oschina.net/u/4525941/blog/4348023