小编rem*_*ezx的帖子

Haskell Thrift库在性能测试中比C++慢300倍

我正在构建一个包含两个组件的应用程序 - 用Haskell编写的服务器和用Qt(C++)编写的客户端.我正在使用节俭来传达它们,我想知道它为什么这么慢.

我进行了性能测试,这是我机器上的结果

结果

C++ server and C++ client:

Sending 100 pings                    -    13.37 ms
Transfering 1000000 size vector      -   433.58 ms
Recieved: 3906.25 kB
Transfering 100000 items from server -  1090.19 ms
Transfering 100000 items to server   -   631.98 ms

Haskell server and C++ client:

Sending 100 pings                       3959.97 ms
Transfering 1000000 size vector      - 12481.40 ms
Recieved: 3906.25 kB
Transfering 100000 items from server - 26066.80 ms
Transfering 100000 items to server   -  1805.44 ms
Run Code Online (Sandbox Code Playgroud)

为什么Haskell在这个测试中这么慢?如何提高性能?

这是文件: …

c++ performance networking haskell thrift

42
推荐指数
5
解决办法
7284
查看次数

在Haskell中,是否存在无穷大:: Num a => a?

我正在尝试实现一个数据结构,如果我使用无穷大进行数字比较,那就简单了.请注意,这不是maxBound/minBound,因为值可以<= maxbound,但所有值都是<infinity.

没希望?

haskell infinity

26
推荐指数
5
解决办法
2万
查看次数

我怎样才能制作GHCI释放内存

介绍

以下代码显示使用runhaskellHaskell Garbage Collector时释放内存,何时a不再使用.它导致核心转储,同时释放变量a- 为了一个目的,检查行为 - a已经nullFunPtr作为终结器.

module Main where

import Foreign.Ptr 
import Foreign.ForeignPtr


main :: IO ()
main = do
    a <- newForeignPtr nullFunPtr nullPtr
    putStrLn "Hello World"
Run Code Online (Sandbox Code Playgroud)

问题

在ghci中运行相同时,它不会释放内存.如何强制ghci释放不再使用的变量?

$ ghci
> import Foreign.Ptr
> import Foreign.ForeignPtr
> import System.Mem
> a <- newForeignPtr nullFunPtr nullPtr
> a <- return () -- rebinding variable a to show gc that I'm no longer using it
> performGC
> -- did …
Run Code Online (Sandbox Code Playgroud)

garbage-collection haskell memory-management ghc ghci

23
推荐指数
1
解决办法
1053
查看次数

c ++线性公式简化库

什么是最好的(在简单的使用和性能方面)C++/C++ 11库可以简化如下的公式?

(a < 0 && b > 0) || (a < 0 && c > 0) || (a < 0 && c > 1) 
Run Code Online (Sandbox Code Playgroud)

到(例如)

a < 0 && (b > 0 || c > 0)
Run Code Online (Sandbox Code Playgroud)

我认为解释一件事是非常重要的(因为我看到这个问题被误解了).

我不想简化C/C++表达式 - 我知道,编译器可以实现它.

我正在制作一个图形处理工具.在图形的边缘,有让关于其顶点某些情况下(比如顶点是a,b,c和这些条件都一样a<b,b>0等等-请注意,这些条件不表示为"弦",他们可以是任何功能或图书馆电话).在处理过程中,我正在收集表达式,在进一步的图形处理之前,我想简化它们.

条件和表达式将在运行时创建.

我希望能够向该库输入一些表达式,例如:

[...]
a = new Variable();
b = new Variable();
expr1 = lib.addExpr(a,0, lib.LESS);
expr2 = lib.addExpr(b,0, lib.MORE);
expr3 = lib.addExpr(expr1, expr2, lib.AND);
[...]
cout << lib.solve(exprn).getConditionsOf(a); …
Run Code Online (Sandbox Code Playgroud)

expression boolean linear-algebra visual-c++

18
推荐指数
4
解决办法
2034
查看次数

在C++或C++ 11中重新抛出类型异常

我需要为函数编写一个包装器.其目的是缓存结果以及可能的函数异常.它应该如下工作:在第一次执行期间,它应该执行函数并存储函数返回的结果(或异常).在下次执行期间,它应返回先前存储的结果或重新抛出捕获的异常.

问题是,我想存储异常类型.所以基本上我想捕获每种类型的异常,并在将来重新抛出它而不会丢失它的类型.

我正在使用C++或C++ 11,因此非常感谢使用其中一种语言的任何解决方案.

c++ design-patterns exception c++11

16
推荐指数
1
解决办法
2014
查看次数

从C++调用Haskell库

我在Qt(C++)中构建一个应用程序,它使用在Haskell中编写的库作为后端.如何将Haskell库的界面导出到C++

当haskell库中的函数使用简单类型时,int或者float它不是问题,但当它们使用结构作为参数时会是什么?这种情况下最具可扩展性的解决方案是什么?

c++ api haskell interface ffi

16
推荐指数
1
解决办法
1265
查看次数

检查haskell中的内存使用情况

我正在创建一个实现某种缓存的程序.我需要尽可能多地使用内存,为此我需要做两件事:

  1. 检查系统中仍有多少内存(仅限RAM,不是SWAP)
  2. 检查我的应用已经使用了多少内存.

我需要一个独立于平台的解决方案(Linux,Windows等).

使用这两个信息,我将减少缓存的大小或放大它.如何在Haskell中获取此信息?有没有可以提供这些信息的软件包?

memory resources caching haskell memory-management

15
推荐指数
1
解决办法
557
查看次数

消息总线通过ZeroMQ

我将在ZeroMQ上实现分布式消息总线,并且我试图使其尽可能高效.我的要求是:

  • 多个进程连接到总线,其中一些在同一台机器上,有些则不在.
  • 进程可以订阅某些主题
  • 不幸的是,没有多播(在生产环境中不支持 - 亚马逊)
  • 我需要多语言的灵魂(至少对于C++,Haskell和Python)

我正在考虑的方法是:

1.目录服务+网状拓扑

  • 有一个目录服务,其中包含所有已连接进程及其地址的列表.
  • 每个进程在启动时连接到DS并询问其他进程的地址
  • 每个进程都有一个Pub和Sub套接字连接到所有其他进程(网状拓扑)

经纪人

  • 所有进程都连接到使用Pub套接字分发消息的代理.

有没有其他/更好的架构可以与ZeroMQ一起使用来创建这样的消息总线?

architecture ipc dbus zeromq amazon-web-services

12
推荐指数
1
解决办法
2935
查看次数

如何使用runhaskell取消隐藏ghc库

我建立简单的脚本runhaskell,我尝试使用FastStringghc-7.10.2.只是:

import FastString

main = putStrLn "Hello SO"
Run Code Online (Sandbox Code Playgroud)

运行它runhaskell Main.hs导致错误:

Main.hs:1:8:
    Could not find module ‘FastString’
    It is a member of the hidden package ‘ghc-7.10.2’.
    Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)

我知道我可以构建它cabal并指定ghc为依赖,但我真的需要这样做runhaskell.

我怎样才能取消隐藏ghc库runhaskell

haskell ghc runhaskell

8
推荐指数
1
解决办法
206
查看次数

Windows中的Haskell列表驱动器

如何在Haskell中列出磁盘驱动器?我想在Windows上获取磁盘驱动器号并在Linux上获得"/".可能吗?我无处可寻.

windows haskell

7
推荐指数
1
解决办法
237
查看次数