Giter VIP home page Giter VIP logo

benchmark's People

Contributors

wenshao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

benchmark's Issues

这样测试,真够外行的

这样测试,真够外行的

(非恶意, 主要是看不下去了,所以才回一下,可能语气上有点,,,,见谅啊,写的也有点乱....)

涉及到算法, 用脚本类语言是绝对不准确的

你必须用C或其它原生编译的语言,尽可能以算法本身性质去写程序,比如数据用指针方式,不要让编译器有计数器引用之类,像脚本那样,内部是指针还是整个内存块拷贝,你根本不能确定的,不同版本,不同解析器,不保证的. 内部计数器或其它额外脚本管理内的浪费了多少你也不知道

一般语言,比如delphi/c++的string, c++的大多数类型,都是有内部引用计数器和长度判断值,编译器的"保护"还会检查你每个操作的内存越界之类, 你用这些类型来做算法,是不正确的, 全部要用指针处理, 一些int,char之定长内置类,虽然自释放,但是他都是在函数内部或是传递环节,所以,不需要计数器,编译器在函数结束时,插入释放指令,这种不影响性能
一些数组的访问,是a[i++]法,只加下标,每次大面积寻址,还是xx=a[0];a=a[i+1], 每次移动指针位置,后期读的是0下标的数据, 这样的,在不同架构中,不同cpu,不同内存,不同应用场合,等都不小的差异的 (一般都是内存里操作,所以一般情况下后面移动指针的方法慢,因为指令上多了好几条, 但如果你加了编译参数,比如要求数据放在cpu缓冲里之类,就不一样了,或是有些高并发高异步的场合,可能后面的更好,指令时间上错开一些)

这样写一个标准指令下的性能(一般arm,x86或其它,都支持的指令,比如xor,加减法等)
除非是统计部分,不然算法本身,避免用乘除法, 因为不同的cpu浮点性能或是乘除器数量是有限的
性能也是有限制的,参差不齐,不能确定一个算法,通用CPU情况下的性能
一些嵌入式arm下,,或是有些vps下你只能用普通指令,没办法用加速指令的,或用了,反而慢
按理Blowfish,不用指令优化的情况下,应该比AES要快的

不同算法benchmark的目的就是要估计算法大概性能,选择一个稳妥的, 所以你这方法不适合现实环境的,不能用于增加自己正确经验值的

然后,再用一个CPU特殊指令下,优化的结果,
比如现在intel有avx512之类的, 一些超大整数计算指令会对算法有大帮助
有时能快好几倍的,这样,在项目,选择硬件平台时,有帮助,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.