Benchmark

痞子衡嵌入式:简析i.MXRT1170 Cortex-M7 FlexRAM ECC功能特点、开启步骤、性能影响

£可爱£侵袭症+ 提交于 2020-04-11 19:55:19
  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是 恩智浦i.MXRT1170上Cortex-M7内核的FlexRAM ECC功能 。   ECC是“Error Correcting Code”的简写,ECC能够实现错误检查和纠正,含有ECC功能的内存一般称为ECC内存,使用了ECC内存的系统在稳定性和可靠性上得到很大提升。相比前几代不带ECC的i.MXRT10xx型号,新一代i.MXRT1170在ECC上做了全面武装,从eFuse到FlexRAM,从OCRAM到外部存储空间全都加上了ECC功能。如下表所示,不同类型的存储由不同的ECC控制器来守护:   今天痞子衡就先给大家简单介绍一下i.MXRT1170上Cortex-M7内核下的FlexRAM ECC功能: 一、FlexRAM ECC功能简介 1.1 FlexRAM v2特点   i.MXRT1170上的FlexRAM模块是v2版本,相比i.MXRT10xx上的FlexRAM v1版本,主要就是增加了ECC功能。关于FlexRAM v1基本功能,建议你先阅读痞子衡之前写过的文章 《恩智浦i.MX RT1xxx系列MCU外设那些事(2)- 百变星君FlexRAM》 ,痞子衡今天主要聊v2新增的功能。   我们知道i.MXRT1170是Cortex-M7和Cortex-M4双核架构,我们看下它的CM7内核系统框图

痞子衡嵌入式:简析i.MXRT1170 Cortex-M7 FlexRAM ECC功能特点、开启步骤、性能影响

独自空忆成欢 提交于 2020-04-11 19:50:37
  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是 恩智浦i.MXRT1170上Cortex-M7内核的FlexRAM ECC功能 。   ECC是“Error Correcting Code”的简写,ECC能够实现错误检查和纠正,含有ECC功能的内存一般称为ECC内存,使用了ECC内存的系统在稳定性和可靠性上得到很大提升。相比前几代不带ECC的i.MXRT10xx型号,新一代i.MXRT1170在ECC上做了全面武装,从eFuse到FlexRAM,从OCRAM到外部存储空间全都加上了ECC功能。如下表所示,不同类型的存储由不同的ECC控制器来守护:   今天痞子衡就先给大家简单介绍一下i.MXRT1170上Cortex-M7内核下的FlexRAM ECC功能: 一、FlexRAM ECC功能简介 1.1 FlexRAM v2特点   i.MXRT1170上的FlexRAM模块是v2版本,相比i.MXRT10xx上的FlexRAM v1版本,主要就是增加了ECC功能。关于FlexRAM v1基本功能,建议你先阅读痞子衡之前写过的文章 《恩智浦i.MX RT1xxx系列MCU外设那些事(2)- 百变星君FlexRAM》 ,痞子衡今天主要聊v2新增的功能。   我们知道i.MXRT1170是Cortex-M7和Cortex-M4双核架构,我们看下它的CM7内核系统框图

Yaf-3.1 10%性能提升版

时光毁灭记忆、已成空白 提交于 2020-03-23 21:23:10
3 月,跳不动了?>>> 本文地址: https://www.laruence.com/2020/03/15/5563.html 转载请注明出处 Yaf(Yet Another Framework) 是我的第一个发布的PECL扩展,也是我走上PHP内核维护的开始,我一直对它比较有感情,Yaf在过去的8年多时间里,也得到了不少朋友的喜爱,当然Yaf还是有很多不足,但毕竟Yaf主要还是针对性能场景,不能满足所有的需求。 即然Yaf == 性能,借着疫情的在家时间,又花了一些时间对Yaf做了一轮优化,希望能对性能有进一步的提升。 主要涉及到的有: 1. 重构了Yaf_Loader::autoload 2. 重写了Yaf_Route_Static/Rewrite的核心逻辑 3. is_localnamespace采用Hash匹配来取代之前的字符串匹配 4. 重写了大部分的逻辑以避免内存分配 因为改动比较大,所以也跳跃了版本,从3.0.9到3.1.0. 下载地址: Yaf At PECL 那么,还是老规矩,我们来测试下性能变化,首先采用yaf代码中的tools/cg/yaf_cg来生成一个测试: tools/cg/yaf_cg benchmark /var/www/html/yaf 测试服务器配置: 32GB RAM Intel(R) Xeon(R) CPU E5-2620 v2 @ 2

Yaf-3.1 10%性能提升版

只愿长相守 提交于 2020-03-20 23:27:28
3 月,跳不动了?>>> 本文地址: https://www.laruence.com/2020/03/15/5563.html 转载请注明出处 Yaf(Yet Another Framework) 是我的第一个发布的PECL扩展,也是我走上PHP内核维护的开始,我一直对它比较有感情,Yaf在过去的8年多时间里,也得到了不少朋友的喜爱,当然Yaf还是有很多不足,但毕竟Yaf主要还是针对性能场景,不能满足所有的需求。 即然Yaf == 性能,借着疫情的在家时间,又花了一些时间对Yaf做了一轮优化,希望能对性能有进一步的提升。 主要涉及到的有: 1. 重构了Yaf_Loader::autoload 2. 重写了Yaf_Route_Static/Rewrite的核心逻辑 3. is_localnamespace采用Hash匹配来取代之前的字符串匹配 4. 重写了大部分的逻辑以避免内存分配 因为改动比较大,所以也跳跃了版本,从3.0.9到3.1.0. 下载地址: Yaf At PECL 那么,还是老规矩,我们来测试下性能变化,首先采用yaf代码中的tools/cg/yaf_cg来生成一个测试: tools/cg/yaf_cg benchmark /var/www/html/yaf 测试服务器配置: 32GB RAM Intel(R) Xeon(R) CPU E5-2620 v2 @ 2

Redis之如何安装Redis

若如初见. 提交于 2020-03-12 09:20:26
1.下载Redis版本 下载链接在这里, http://download.redis.io/releases/ 2.解压 执行如下命令,如下List-1 List-1 tar -zxvf redis-3.2.10.tar.gz 3.进入redis目录,执行命令 List-2 cd redis-3.2.10 sudo make test 4.执行install命令 编译安装,如下 List-3 sudo make install 5.查看结果 List-4 mjduan@mjduandeMacBook-Pro:/opt/software/code-tool/redis-3.2.10 % ll src/redis-* -rwxr-xr-x 1 root wheel 94K 9 2 23:20 src/redis-benchmark -rw-r--r--@ 1 mjduan wheel 29K 7 28 2017 src/redis-benchmark.c -rw-r--r-- 1 root wheel 44K 9 2 23:20 src/redis-benchmark.o -rwxr-xr-x 1 root wheel 14K 9 2 23:16 src/redis-check-aof -rw-r--r--@ 1 mjduan wheel 6.2K 7 28 2017 src

Check If a String Is Numeric in Java

假装没事ソ 提交于 2020-02-28 11:20:51
1. Introduction Oftentimes while operating upon String s, we need to figure out whether a String is a valid number or not. In this tutorial, we’ll explore multiple ways to detect if the given String is numeric , first using plain Java, then regular expressions and finally by using external libraries. Once we're done discussing various implementations, we'll use benchmarks to get an idea of which methods are optimal. 2. Prerequisites Let's start with some prerequisites before we head on to the main content. In the latter part of this article, we'll be using Apache Commons external library for

从架构师视角看是否该用Kotlin做服务端开发?

允我心安 提交于 2020-02-27 20:54:29
前言 自从Oracle收购Sun之后,对Java收费或加强控制的尝试从未间断,谷歌与Oracle围绕Java API的官司也跌宕起伏。虽然Oracle只是针对Oracle JDK8的升级收费,并释放了OpenJDK一直开源这份善意,但是如果没有各个大非Oracle的JVM、JDK和众多其它基于JVM的语言,Oracle这份善意能维持到什么时候可不好说。 大厂要从JVM和JDK的层面早做打算,而广大中小企业,就只能先从Java语言的层面,先找到Oracle以外的备胎。自从被谷歌钦定为Android开发首选语言之后,采用Apache2.0 License的Kotlin逐渐进入大众的视野。从领域语言到通用语言,基于JVM的语言选择众多,Kotlin能脱颖而出被谷歌相中,除了License的友好外,自然有其独到之处(个人觉得基于Python语法的Jython在当时也算是一个强强联合的选择,当然现在来看Kotlin的优势明显)。我们先从摘自网上的一个段子来感受下Kotlin的特点: Scala:想解决Java表达能力不足的问题 Groovy:想解决Java语法过于冗长的问题 Clojure:想解决Java没有函数式编程的问题 Kotlin:想解决Java 当然,团队开发比个人开发要考虑的问题更多,本文从研发团队的视角,来审视在服务端开发项目中是否应该使用Kotlin

使用mysqldump跳过某些表

孤街醉人 提交于 2020-02-27 01:15:18
有没有办法从mysqldump命令限制某些表? 例如,我使用以下语法 只 转储table1和table2: mysqldump -u username -p database table1 table2 > database.sql 但是有没有类似的方法来转储 除 table1和table2 之外的 所有表? 我还没有在mysqldump文档中找到任何内容,那么brute-force(指定所有表名)是唯一的方法吗? #1楼 对于多个数据库: mysqldump -u user -p --ignore-table=db1.tbl1 --ignore-table=db2.tbl1 --databases db1 db2 .. #2楼 基于@Brian-Fisher的回答并回答了一些人对这篇文章的评论,我在我的数据库中有一堆巨大的(和不必要的)表,所以我想在复制时跳过它们的内容,但保留结构: mysqldump -h <host> -u <username> -p <schema> --no-data > db-structure.sql mysqldump -h <host> -u <username> -p <schema> --no-create-info --ignore-table=schema.table1 --ignore-table=schema.table2 > db

一线攻城狮实战经验:RDMA,好用却又很难用?

大兔子大兔子 提交于 2020-02-26 13:32:52
势不可挡的 RDMA 如今,服务器的网络带宽越来越高。当网络带宽迈过万兆这条线后,操作系统用于处理网络IO的开销就越来越难以忽视。在一些网络IO密集的业务中,操作系统本身成为了网络通信的瓶颈,这不仅会导致调用时延的增加(尤其是长尾),还会影响到服务的整体吞吐。 相对于网络带宽的发展速度,CPU性能的发展停滞是导致上述问题的主要原因。 因此,想从根本上解决CPU参与网络传输的低效问题,就要更多地借助专用芯片的能力,RDMA高性能网络势不可挡。 RDMA(Remote Direct Memory Access),可以简单理解为网卡完全绕过CPU实现两个服务器之间的内存数据交换。其作为一种硬件实现的网络传输技术,可以大幅提升网络传输效率,帮助网络IO密集的业务(比如分布式存储、分布式数据库等)获得更低的时延以及更高的吞吐。 具体来说,RDMA技术的应用要借助支持RDMA功能的网卡以及相应的驱动程序。由下图所示,一旦应用程序分配好资源,其可以直接把要发送的数据所在的内存地址和长度信息交给网卡。网卡从内存中拉取数据,由硬件完成报文封装,然后发送给对应的接收端。接收端收到RDMA报文后,直接由硬件解封装,取出数据后,直接放在应用程序预先指定的内存位置。 **由于整个IO过程无需CPU参与,无需操作系统内核参与,没有系统调用,没有中断,也无需内存拷贝,因此RDMA网络传输可以做到极高的性能。*

Java中对于位运算的优化以及运用与思考

为君一笑 提交于 2020-01-08 19:16:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引言 随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码。之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候考虑内存的限制优先于处理器),所以很多时候,利用位运算来节约空间或者提高性能,那么这些优秀的思想,放到目前的Java中,是否还有必要这么做呢?我们逐一思考与验证下(其实这也是一个关于Premature optimization的界定的思考) 1. 乘法与左移位 左移一位,相当于乘以2,左移n位,相当于乘以2的n次方。 1 << 1 == 1 * 2 //true 1 << n == 1 * pow(2, n) // true public int pow(int i, int n) { assert n >= 0; int result = 1; for (int i = 0; i < n; i++) { result *= i; } return result; } 看上去,移位应该比乘法性能快。那么JIT与JVM虚拟机是否做了一些优化呢?优化分为两部分,一个是编译器优化,另一个是处理器优化。我们先来看看字节码是否一致判断是否有编译优化,例如直接将乘以2优化成左移一位,来编写两个函数: public void