当前位置: 首页 > news >正文

网站编程零基础入门网站域名好了下一步

网站编程零基础入门,网站域名好了下一步,生产管理软件哪个好用,网页设计与制作实训报告实训目的本文算是一个比较完整的关于在 C/C 中测量一个函数或者功能的总结#xff0c;最后会演示三种方法的对比。 最常用的clock() 最常用的测量方法是使用clock()来记录两个 CPU 时间点clock_t#xff0c;然后做差。这个方法的好处在于非常简单易写#xff0c;如下#xff08;第…本文算是一个比较完整的关于在 C/C 中测量一个函数或者功能的总结最后会演示三种方法的对比。 最常用的clock() 最常用的测量方法是使用clock()来记录两个 CPU 时间点clock_t然后做差。这个方法的好处在于非常简单易写如下第一行是为说明需要导入哪个库 #include time.h .....clock_t begin clock();...需要被测量的代码clock_t end clock();int duration (end - begin)/CLOCKS_PER_SEC;需要注意 3 点 CLOCKS_PER_SEC在 macOS 上是 1000000也就是说(end - begin)的单位是微秒所以要除以CLOCKS_PER_SEC。不同平台的clock_t类型是不一样的有些平台是整数型有些是使用浮点型。如果是浮点型的话CLOCKS_PER_SEC或许可以不用写还是要看time.h的相关内容。这个方法中的“clock”一词表示的是时钟频率而不是时间。早期的计算机是固定频率的现在的一些计算器或者单片机其实也是固定频率的这个方法就是诞生于那个时间的。 这种方法最大的弊端就是它测量是 CPU 运行时间准确的说是该进程使用 CPU 的时间。这就导致了对于非 CPU 密集型程序来说这个结果可能不是那么精确。当然导致的最大的问题是并行计算程序得到的时间完全不对而且不能简单地使用核心数计算得到正确的时间。 因为这个方法是将多个 CPU 的运行时间加在一起了串行计算的程序完全没有问题但是并行计算的话CPU 使用率一般不会达到或接近核心数*100%因为计算机上还有其他任务也需要 CPU。比如说如果串行计算的程序使用率一般在 99% 左右获取时间为 30 秒但是对于 6 核的设备上运行的并行计算程序的话CPU 使用率达到 570% 就很不错了获取的时间可能为 27 秒而实际上只用了 5 秒。 这是我在使用 ISPC 编写并行计算程序的时候发现的所以我想寻找到新的方案于是我发现了下一个方法。 timespec timespec是一个简单的日历时间或者时间流逝。通过使用日历时间可以解决上一节中无法测量并行程序的实际运行时间的问题。但是“简单”这点的表现为整数时间也就是说最小的时间精度是秒而不是上一种方法中的微秒不过这对于复杂函数或程序的测试来说没啥问题毕竟 30 分钟和 31 分钟的性能差距不过 3.22%。 方法如下第一行是为说明需要导入哪个库 #include time.htime_t begin time(NULL);...需要被测量的代码time_t end time(NULL);int duration (end - begin);可以看到比上一种还要简单。 但是对于一些小型的测试来说这个方法又不太行因为整数带来的误差太大了比如说 0.6 秒是 1.8 秒性能的三倍但是在整数上只为 2 倍甚至是 1 倍为什么有这个“甚至”等会演示可以看到所以还是需要一个更精确时间测量方法这个方法不光要适应并行计算还要有一定的精度。 clock_gettime() clock_gettime()可以完美的符合要求但是使用上有点复杂。 clock_gettime()是我从文档的下面发现的。一开始我找到的是gettimeofday()然后我去看了一下 IEEE 标准的文档 https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html发现在“FUTURE DIRECTIONS未来方向”这一栏表示gettimeofday()可能未来会被废弃在“APPLICATION USAGE应用使用”这一栏表示应用应该使用clock_gettime()而不是gettimeofday。这必须得使用clock_gettime()了。 clock_gettime()的复杂之处在于太精确了。先来看看使用方法第一行是为说明需要导入哪个库 #include time.hstruct timespec start;clock_gettime(CLOCK_REALTIME, start);...需要被测量的代码struct timespec end;clock_gettime(CLOCK_REALTIME, end);double duration (double)(end.tv_nsec-start.tv_nsec)/((double) 1e9) (double)(end.tv_sec-start.tv_sec);clock_gettime()的参数CLOCK_REALTIME表示系统层面的实时时间这个地方还可以用CLOCK_MONOTONIC这个值是从系统启动开始一直运行的一直连续的不跳跃的除非手动改了这个要比CLOCK_REALTIME精度小一些所以更快一些。 可以看到计算运行时间的代码也就是时间差的表达式长了很多是因为clock_gettime()获取的时间分为两部分秒和纳秒在某论坛上有人指出在曾经的 Mac OS X 上这里是微秒不确定不过现在也是纳秒了。秒是int很简单的但是纳秒用的是long int这就涉及到转换的问题了。所以就需要分别计算两个部分转换合成。 实际演示三种方法的对比 这里展示一段并行计算程序在三种测量时间方法下的对比各位可以看看差别可以推测出测试设备是 6C6T 的 CPU 哦 可以看到有时差别还是挺大的。 参考 21.2 Time Types - GNU 21.4 Processor And CPU Time - GNU clock_gettime(3) — Linux manual page What is the proper way to use clock_gettime()? - stack overflow clock_getres, clock_gettime, clock_settime - clock and timer functions - IEEE 希望能帮到有需要的人
http://www.zqtcl.cn/news/423793/

相关文章:

  • 海南网站开发公司百度网站建设费用怎么做账
  • 做网站的研究生专业微信公众号推广的方法
  • sql网站开发数据库连接失败wordpress改全屏
  • 做外贸怎么上国外网站网上注册公司流程图文
  • 网站开发 慕课厦门建设局网站技司学校
  • 中山自助建站系统多个网站能否统一做等保
  • 做网站怎么别人搜不出来电商购物网站开发需求分析
  • 教育网站设计用模板做的网站不好优化
  • php网站api接口写法中国做铁塔的公司网站
  • 做博客网站如何盈利wordpress百家号
  • 读经典做临床报名网站cnzz 网站跳出率查询
  • 青岛网站建设网站广东手机网站制作公司
  • 个人免费建站软件影视传媒网站源码
  • 网站软件下载app如何做国外网站
  • 网站建设小细节图片北京装修公司报价
  • 辽宁省住房和城乡建设厅网站换了淮安做网站公司
  • 天津商业网站建设搜狗排名优化工具
  • 阿里服务器可以做多少个网站在家怎么利用电脑赚钱
  • 免费建设一个网站google官方版下载
  • 心馨人生珠海网站建设外贸型企业网站建设
  • 好网站建设公司昆明乐清网站优化推广
  • 哪些网站用天平做logo站长工具app官方下载
  • 做餐厅logo用什么软件网站手机自适应网站源码
  • 股票网站模板辽宁工程建设信息网站
  • 毕业设计某网站开发的开题报告范文广西建设教育网站
  • 浏览小城镇建设的网站商丘网站公司
  • python学习网站做好网络推广的技巧
  • 网站有几种类型小说网站开发源码
  • 给城市建设提议献策的网站网站建设可研报告
  • 常德论坛网站陕西建设官方网站