https://taskflow.github.io/taskflow/install.html
https://github.com/szandara/cpp-taskflow?tab=readme-ov-file info
https://dreampuf.github.io/GraphvizOnline/
https://taskflow.github.io/tfprof/
https://www.oschina.net/p/cpp-taskflow
https://github.com/taskflow/taskflow/releases/tag/v3.5.0
https://github.com/taskflow/taskflow
https://taskflow.github.io/taskflow/index.html
https://www.zywvvd.com/notes/coding/cpp/taskflow/taskflow/
我使用的版本是3.5,
运行官例出现如下报错:
加上-std=c++17后就解决了。后面的官例大家可以看 Taskflow:异步任务(Asynchronous Tasking)-CSDN博客 https://blog.csdn.net/jj147258369/category_12624347.html 这个博主,他理解得透彻一些。而我现在只是为了追求性能蛮试。
运行官例parallel_data_pipeline,结果:
将输出的拓扑图代码复制到在线查看网站:Graphviz Online
由pdf第3章可以知道,有5种任务调度模式:static task, dynamic task, composable task, condition

组合任务使开发者可以自行决定任务层次,可以通过组合模块化、重复的单元形成更大的任务。这可以提高产能和并行编程的可伸缩性。如下图C--D--E是静态线(主taskflow),而D1--D2--D是动态线,E是一个模块化任务单元(单独的一个taskflow)。
而下图是一个不正确的组合任务示例:因为这两个相同的模块化任务F1会导致竞争???
我的实例是参考简单的官例写的,都是静态task,部分代码与输出如下:
拓扑图如下,这和我设计的流程是一致的:
可是性能对比好像并没有太大的提升???
是不是不该用静态,因为这并不是一条很顺的主线。应该用动态?组合?
我profile一下,按照官网:
将这个json文件拷贝到Taskflow Profiler 下面的框中:
可以看到我的都是浅蓝色的,因为表示static即静态。末端的柱状图表示对每个task根据耗时排序的结果。鼠标点击任意位置即可出现task名称以及相关信息:
左边显示的E0即Executor0,因为我的确只创建了1个executor。W即表示Worker,这4个worker自动生成的?L0表示Level0,也是自动生成?
可以看到主要是W1最耗时,怎么继续优化我想想
到此这篇hprof(Hprof 堆栈)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/23203.html