草庐IT

haskell-platform

全部标签

multithreading - Haskell/GHC 每线程内存成本

我正在尝试了解Haskell(OSX10.10.5上的GHC7.10.1)中的(绿色)线程到底有多贵。我知道与真正的操作系统线程相比,它的内存使用和CPU都非常便宜。是的,所以我开始用forksn(绿色)线程(使用优秀的async库)编写一个super简单的程序,然后让每个线程休眠m秒。嗯,这很容易:$catPerTheadMem.hsimportControl.Concurrent(threadDelay)importControl.Concurrent.Async(mapConcurrently)importSystem.Environment(getArgs)main=doarg

multithreading - Haskell/GHC 每线程内存成本

我正在尝试了解Haskell(OSX10.10.5上的GHC7.10.1)中的(绿色)线程到底有多贵。我知道与真正的操作系统线程相比,它的内存使用和CPU都非常便宜。是的,所以我开始用forksn(绿色)线程(使用优秀的async库)编写一个super简单的程序,然后让每个线程休眠m秒。嗯,这很容易:$catPerTheadMem.hsimportControl.Concurrent(threadDelay)importControl.Concurrent.Async(mapConcurrently)importSystem.Environment(getArgs)main=doarg

haskell - Haskell程序的-hc配置文件中PINNED是什么意思?

我正在尝试分析我的应用程序。在使用-hcRTS选项分析内存使用情况时,我注意到很多内存标记为PINNED。当使用-hy运行时,内存被标记为ARR_WORDS。该程序使用hmatrix包中的Data.Packed.Matrix模块创建一个2400×2400的double矩阵,并且由于其中的元素应该存储在连续内存中,我没有看到矩阵占用这么多空间的方式。我的问题是:PINNED这个词实际上是什么意思?还有没有办法获得有关为什么以及在何处使用内存的更多信息?有问题的整个源代码是onGitHub,是否有人对此感兴趣。然而,它远非最小的例子。 最佳答案

haskell - Haskell程序的-hc配置文件中PINNED是什么意思?

我正在尝试分析我的应用程序。在使用-hcRTS选项分析内存使用情况时,我注意到很多内存标记为PINNED。当使用-hy运行时,内存被标记为ARR_WORDS。该程序使用hmatrix包中的Data.Packed.Matrix模块创建一个2400×2400的double矩阵,并且由于其中的元素应该存储在连续内存中,我没有看到矩阵占用这么多空间的方式。我的问题是:PINNED这个词实际上是什么意思?还有没有办法获得有关为什么以及在何处使用内存的更多信息?有问题的整个源代码是onGitHub,是否有人对此感兴趣。然而,它远非最小的例子。 最佳答案

c++ - 从 C++ 到 Haskell 类和状态

我必须转换这个C++代码classA{public:intx_A;voidsetX_A(intnewx){x_A=newx;}voidprintX_A(){printf("x_Ais%d",x_A);}};classB:publicA{public:intx_B;voidsetX_B(intnewx){x_B=newx;}voidprintX_B(){printf("x_Bis%d",x_B);}};main(){AobjA;BobjB;objA.setX_A(2);objA.printX_A();objB.printX_A();objB.setX_B(5);objB.printX_B

c++ - 从 C++ 到 Haskell 类和状态

我必须转换这个C++代码classA{public:intx_A;voidsetX_A(intnewx){x_A=newx;}voidprintX_A(){printf("x_Ais%d",x_A);}};classB:publicA{public:intx_B;voidsetX_B(intnewx){x_B=newx;}voidprintX_B(){printf("x_Bis%d",x_B);}};main(){AobjA;BobjB;objA.setX_A(2);objA.printX_A();objB.printX_A();objB.setX_B(5);objB.printX_B

c++ - 从 C++ 调用 Haskell 库

我正在Qt(C++)中构建一个应用程序,它使用用Haskell编写的库作为后端。如何将Haskell库的接口(interface)导出到C++?当haskell库中的函数使用像int或float这样的简单类型时,这不是问题,但是当它们使用结构作为参数时呢?在这种情况下,最具扩展性的解决方案是什么? 最佳答案 您需要编写haskell代码来将这些数据结构编码为您可以在Haskell中使用的数据结构。c2hs工具在这方面很有帮助:http://hackage.haskell.org/package/c2hs虽然该工具似乎是为从Haske

c++ - 从 C++ 调用 Haskell 库

我正在Qt(C++)中构建一个应用程序,它使用用Haskell编写的库作为后端。如何将Haskell库的接口(interface)导出到C++?当haskell库中的函数使用像int或float这样的简单类型时,这不是问题,但是当它们使用结构作为参数时呢?在这种情况下,最具扩展性的解决方案是什么? 最佳答案 您需要编写haskell代码来将这些数据结构编码为您可以在Haskell中使用的数据结构。c2hs工具在这方面很有帮助:http://hackage.haskell.org/package/c2hs虽然该工具似乎是为从Haske

visual-studio - CMake 如何为 Visual Studio 2015 项目指定 "Platform Toolset"?

有一个由CMake生成的VS2015项目,我想更改其“平台工具集”。我已经尝试了这些解决方案,但它不起作用:设置(CMAKE_VS_PLATFORM_TOOLSET"v120")cmake-T"v120"有人可以帮忙吗?谢谢。 最佳答案 首先:如果您已经生成了项目,请删除CMakeCache.txt。下次运行cmake:cmake-G"VisualStudio14"-Tv120当您需要更改生成器(工具集是其中的一部分)时,您应该删除CMakeCache.txt文件。 关于visual-s

visual-studio - CMake 如何为 Visual Studio 2015 项目指定 "Platform Toolset"?

有一个由CMake生成的VS2015项目,我想更改其“平台工具集”。我已经尝试了这些解决方案,但它不起作用:设置(CMAKE_VS_PLATFORM_TOOLSET"v120")cmake-T"v120"有人可以帮忙吗?谢谢。 最佳答案 首先:如果您已经生成了项目,请删除CMakeCache.txt。下次运行cmake:cmake-G"VisualStudio14"-Tv120当您需要更改生成器(工具集是其中的一部分)时,您应该删除CMakeCache.txt文件。 关于visual-s