Benchmark

简单的PHP 8 / PyPy / Node.js JIT性能对比

核能气质少年 提交于 2020-11-29 15:39:18
写在前面:完整的评估性能必须要靠更全面的benchmark,micro-benchmark只能说明一部分问题,一般只能提供某种场景下提升的情况。真实的提升离不开真实场景下对应用的测试。 在知乎上看到一个很有意思的PHP 8 JIT版本的benchmark https://zhuanlan.zhihu.com/p/314783520 ​ zhuanlan.zhihu.com 这个实验通过一个Brainfuck解释器 + Brainfuck代码来测试性能,比较有趣,因为很少有这么测试的。当然,本质上还是micro-benchmark,而且测试的性能很单一,主要就是:单变量++/--,数组读,数组读写。 不过这个文章当中犯了个错误,就是PHP 8虽然已经release了,但是默认并不开启JIT,而且手册很具有误导性,因为手册当中写opcache.jit默认设置为开启,然而还有个opcache.jit_buffer_size也要设置为非0值才可以,更不要说官方镜像默认没有加载opcache.so(what???)所以正确测试的命令行是: php -dzend_extension=opcache.so -dopcache.enable_cli=1 -dopcache.enable=1 -dopcache.jit_buffer_size=100M run.php

Hotchips 2020

試著忘記壹切 提交于 2020-11-28 00:55:23
最近太忙一直没更新,也没空写的特别细,就把Hotchips今年比较有意思的先一股脑儿放上来,我想到哪里写到哪里。 Marvell: ARM based server Marvell这个应该做了很久了,现在其他公司也不搞了,不清楚会走多远。之前我是不太看好这类东西的,但是苹果都开始做M1了,搞不好这个路子真的有未来。 也没什么特别的心意,除了发现,诶,居然还在做,牛啊。 平头哥的玄铁910 之前也有人介绍过了,我就先放个链接 如何看待阿里巴巴旗下 「平头哥」发布首枚芯片 :玄铁 910? ​ www.zhihu.com 这么宽的vector instruction功耗没问题么,如果是为了AI不应该扔给另外一个专门做AI小东西做么。 总的感觉不是特别明确具体应用场景是啥,好像也买不到,但是看着还挺有意思的。要是能说出更具体的应用场景,然后在这个场景下如何吊打别人,可能更有利于大家理解吧。 哈佛大学的Baysian Inference Accelerator 哈佛大学做这些的感觉路子一直很野啊。 实现上这个PGMA是优化的实现,一个大的cache加上一堆Gibbs Sampler。忘记Gibbs sampling是干啥的,这里复习 http://www.mit.edu/~ilkery/papers/GibbsSampling.pdf ​ www.mit.edu

CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

痞子三分冷 提交于 2020-11-17 03:55:59
点击上方“ 迈微AI研习社 ”,选择“ 星标★ ”公众号 重磅干货,第一时间送达 作者 | Alan 授权转载自 | https://zhuanlan.zhihu.com/p/121721537 CVPR2020:Structure-Preserving Super Resolution with Gradient Guidance 论文:https://arxiv.org/pdf/2003.13081.pdf 代码:https://github.com/Maclory/SPSR 我们知道,结构信息在超分辨率问题中相当重要。目前已经有很多感知驱动的方法(SRGAN、ESRGAN、EnhanceNet)使用 GAN Loss 和 Perceptual Loss 生成较为逼真,且细节丰富的超分图像。然而,在这些恢复的图像中总是存在一些我们并不希望它出现的结构变形,如下图1所示。 仅仅使用 L1 Loss 的RCAN生成图像的轮廓边缘虽然相对规则,但是整体较为模糊。SRGAN、ESRGAN、NatSR等生成的图像则存在明显的结构变形。 图 1. 局部图像细节对比 因此,论文提出了结构保留超分辨率方法 SPSR,以缓解结构变形的同时,保留 GAN 方法生成丰富纹理细节的优点。特别的是,论文使用了图像的梯度信息去指导图像复原。 如何通过梯度信息指导图像复原? 主要有两点: 1.SPSR

云原生微服务框架之go-zero

只谈情不闲聊 提交于 2020-11-13 06:30:48
0. go-zero介绍 go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero包含极简的API定义和生成工具goctl,可以根据定义的api文件一键生成Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript代码,并可直接运行。 使用go-zero的好处: 轻松获得支撑千万日活服务的稳定性 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码 微服务治理中间件可无缝集成到其它现有框架使用 极简的API描述,一键生成各端代码 自动校验客户端请求参数合法性 大量微服务治理和并发工具包 1. go-zero框架背景 18年初,晓黑板后端在经过频繁的宕机后,决定从 Java+MongoDB 的单体架构迁移到微服务架构,经过仔细思考和对比,我们决定: 基于Go语言 高效的性能 简洁的语法 广泛验证的工程效率 极致的部署体验 极低的服务端资源成本 自研微服务框架 个人有过很多微服务框架自研经验 需要有更快速的问题定位能力 更便捷的增加新特性 2. go-zero框架设计思考 对于微服务框架的设计,我们期望保障微服务稳定性的同时,也要特别注重研发效率。所以设计之初,我们就有如下一些准则: 保持简单 高可用 高并发 易扩展 弹性设计

JMH java基准测试

一曲冷凌霜 提交于 2020-11-06 06:30:42
Measure, don’t guess! JMH适用场景   JMH只适合细粒度的方法测试 原理   编译时会生成一些测试代码,一般都会继承你的类 maven依赖 < dependencies > < dependency > < groupId > org.openjdk.jmh </ groupId > < artifactId > jmh-core </ artifactId > < version > ${jmh.version} </ version > </ dependency > < dependency > < groupId > org.openjdk.jmh </ groupId > < artifactId > jmh-generator-annprocess </ artifactId > < version > ${jmh.version} </ version > < scope > provided </ scope > </ dependency > </ dependencies > < properties > < project.build.sourceEncoding > UTF-8 </ project.build.sourceEncoding > < jmh.version > 1.0 </ jmh.version > < javac

jmh 微基准测试

三世轮回 提交于 2020-11-06 05:03:04
选择依据:对某段代码的性能测试。 1.运行方法 mvn clean install java -jar target/benchmarks.jar JMHSample_02 -f 1 2.maven 配置 < dependency > < groupId > org.openjdk.jmh </ groupId > < artifactId > jmh-core </ artifactId > < version > ${jmh.version} </ version > </ dependency > < dependency > < groupId > org.openjdk.jmh </ groupId > < artifactId > jmh-generator-annprocess </ artifactId > < version > ${jmh.version} </ version > < scope > provided </ scope > </ dependency > < dependency > < groupId > org.slf4j </ groupId > < artifactId > slf4j-api </ artifactId > < version > 1.7.7 </ version > </ dependency > <!--

阳振坤:OceanBase 数据库七亿 tpmC 的关键技术

让人想犯罪 __ 提交于 2020-11-04 19:46:52
OB君:2020年9月25日,OceanBase在外滩大会举办的“数据库,新标杆,新征途”分论坛正式落幕,内容涵盖数据库的趋势探讨、分布式数据库的技术创新与行业应用,及国内数据库的发展与生态。欢迎持续关注本系列内容~ 北京奥星贝斯科技有限公司 CTO 兼 OceanBase 数据库创始人阳振坤,在外滩大会上分享了《OceanBase 数据库七亿 tpmC 的关键技术》的主题演讲,以下为演讲实录: 联机事务处理(OLTP)系统 很多人都清楚事务的 ACID 特性,知道事务要满足原子性、一致性、隔离性和持久性,这是从数据库本身的角度来看。但是,如果站在业务的角度,客户对数据库其实有更高的要求,第一个要求是数据不能错,交易数据是企业所有数据的基础,是最核心的数据,这是企业的命脉。 第二个要求是服务不能停,比如最早期的支付宝在后半夜没有业务访问或者业务访问量很少,如今支付宝24小时都有访问,每日高峰的时候峰值甚至比早年的双11还高。所以服务是永远不能停的。 第三个要求是事务高并发处理能力,因为很难预算出有多少用户在同时使用,所以这就需要数据库有高度并发处理的能力。全世界有非常多的数据库厂商,近年来也进入了国产数据库的繁荣时期,但是翻过这座山真正能够把这套系统做到生产中使用的其实少之又少。 TPC-C 基准测试 TPC-C benchmark 诞生于上个世纪80年代,ATM

连载:阿里巴巴大数据实践—数据开发平台

旧城冷巷雨未停 提交于 2020-11-02 17:03:33
阿里数据人都在用的内部技术经验 关注 数智化转型俱乐部 ,数智化不迷路 摘要 介绍 MaxCompute 和阿里巴巴内部基于 MaxCompute 的大数据开发套件,并对在数据开发过程中经常遇到的问题和相关解决方案进行介绍。 数据只有被整合和计算,才能被用于洞察商业规律,挖掘潜在信息,从而实现大数据价值,达到赋能于商业和创造价值的目的。面对海量的数据和复杂的计算,阿里巴巴的数据计算层包括两大体系:数据存储及计算平台(离线计算平台MaxCompute和实时计算平台StreamCompute)、数据整合及管理体系(OneData)。 阿里数据研发岗位的工作大致可以概括为:了解需求→模型设计→ETL开发→测试→发布上线→日常运维→任务下线。与传统的数据仓库开发(ETL)相比,阿里数据研发有如下几个特点: 业务变更频繁 — —业务发展非常快,业务需求多且变更频繁; 需 要快速 交付 — —业务驱动,需要快速给出结果; 频 繁发布上线 — —迭代周期以天为单位,每天需要发布数次; 运 维任务多 — —在集团公共层平均每个开发人员负责上百多 个任务; 系统环境复杂 — —阿里平台系统多为自研,且为了保证业务的发展,平台系统的迭代速度较快,平台的稳定性压力较大。 通过统一的计算平台(MaxCompute)、统一的开发平台、统一的数据模型规范和统一的数据研发规范,可以在一定程度上解决数据研发的痛点

【SQL注入】SQL注入知识总结v1.0

爷,独闯天下 提交于 2020-11-02 16:17:45
点击上方 “公众号” 可以订阅哦! Hello,各位小伙伴周末晚上好~ 话说最近有小伙伴在公众号留言问我: “小编,怎么盗QQ号?” “小编,在某某网站用什么代码就可以免费充值?” “小编,能不能帮我攻击一下某某网站?” “小编,出来挨打!” First of all,你的目标得有可以利用的漏洞才行,不存在什么万能代码的... 第二,第二步之后的所有行为都是违反国家 网络安全法 的!!! 我们要做遵纪守法,维护国家网络安全的白帽子~ 而不是搞黑产的黑客~~ 好啦,言归正传,其实早就写完了这篇SQL注入总结,但一直没有发布。 因为SQL注入可以写的东西实在太多了,最后决定还是先发出来,后期继续丰富吧。 Part.0 目录 目录 一、SQL概述 什么是SQL注入? 二、SQL注入点的类型 注入点分类 三、常见的注入方式 报错注入 联合查询注入 盲注 时间盲注 存储过程 四、存在SQL注入的点 GET POST HTTP 文件头注入 五、一些WAF的绕过方法 六、SQL注入的防护 SQL注入的危害 使用预编译语句 对输入进行严格的过滤 最小权限原则 Part.1 SQL概述 什么是SQL注入? 利用web应用程序对用户 输入验证上的疏忽 ,攻击者在输入的数据中包含对某些数据库系统 有特殊意义的符号或命令 。 通过将这些恶意命令 拼接到正常的SQL执行语句中一并执行

数据库链接池终于搞对了,从100ms优化到3ms!

≯℡__Kan透↙ 提交于 2020-11-02 07:48:09
点击上方蓝色字关注我们~ “ 我在研究 HikariCP(一个数据库连接池)时无意间在 HikariCP 的 Github wiki 上看到了一篇文章,这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽。 图片来自 Pexels 本文内容 95% 译自这篇文章 : https: //github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing 数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。 1 万并发用户访问 想象你有一个网站,压力虽然还没到 Facebook 那个级别,但也有个 1 万上下的并发访问,也就是说差不多 2 万左右的 TPS。 那么这个网站的数据库连接池应该设置成多大呢?结果可能会让你惊讶,因为这个问题的正确问法是:“这个网站的数据库连接池应该设置成多小呢?” 下面这个视频是 Oracle Real World Performance Group 发布的,请先看完: http: //www.dailymotion.com/video/x2s8uec 因为这视频是英文解说且没有字幕,我替大家做一下简单的概括:视频中对 Oracle 数据库进行压力测试,9600 并发线程进行数据库操作,每两次访问数据库的操作之间 sleep 550ms