小编Jon*_*ark的帖子

哪些技术对Haskell的性能提升贡献最大?

我在90年代后期在大学学到了一些Haskell.当时,虽然表现足够并且比人们对这种高级语言所期望的要好得多,但它仍然没有什么可写的.

事情变了.Haskell(GHC)今天具有很好的性能,通常离C/C++不远.那么,编译器中究竟发生了哪些变化,对这一改进贡献最大?我知道经常使用的几种技术,例如更好的拆箱和严格分析.我想要的是对这些技术为整体性能改进带来的定量贡献的一些粗略想法.

如果您愿意,问题还可以用以下术语表达:考虑到90年代中期GHC Haskell的不那么出色的表现.将性能提升到接近2013 GHC Haskell的前5个领域是什么?

haskell ghc

27
推荐指数
1
解决办法
979
查看次数

在Linux上设置蓝牙自动配对

我想使用任何手机通过蓝牙Classic与串行端口协议(SPP)连接到物联网设备.物联网设备没有屏幕,没有键盘,只要连接电话知道一个秘密密码,就应该自动接受连接(即,我不想强​​迫每次都进入物联网设备进行配对一部新手机试图连接).

这些是我到目前为止在物联网设备上运行的命令:

# Make the device discoverable:
hciconfig hci0 piscan

# Register SPP:
sdptool add --channel=22 SP

# Start rfcomm:
rfcomm -r watch /dev/rfcomm0 22
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到任何设置PIN的方法,当我尝试连接手机时,配对失败了.此外,该设备只能在短时间内被发现.

如何配置物联网设备的蓝牙堆栈(运行最近的Bluez)以与任何知道给定PIN的电话自动配对,以及如何使发现期间永恒?

bluetooth rfcomm bluez

24
推荐指数
1
解决办法
3284
查看次数

是否存在与类型类相关的运行时惩罚?

标题几乎总结了我的问题:是否存在与Haskell的类型类相关的运行时代价,或者它只是其中一种(如幻像类型)而没有任何运行时结果?

haskell typeclass

19
推荐指数
1
解决办法
756
查看次数

什么是主要类型?

OCaml编译器有一个"-principal"选项,邮件列表中有时会提到术语"主体类型".究竟是什么意思?维基百科中的定义是递归的,因为它假设读者已经熟悉这个概念.

ocaml

18
推荐指数
2
解决办法
2171
查看次数

将HyperLogLog应用于总体样本

Flajolet 等人的HyperLogLog算法描述了一种仅使用少量内存来估计集合基数的巧妙方法.但是,它确实考虑了计算中原始集合的所有N个元素.如果我们只能获得原始N的一小部分随机样本(比方说,10%)怎么办?有没有关于HyperLogLog或类似算法如何适应这种情况的研究?

我知道这基本上是描述为不同价值估计的问题,对此存在大量研究(例如参见本文的概述).然而,我所知道的关于独特价值估计的研究使用了许多与HyperLogLog使用的方法截然不同的特别估计.因此,我想知道是否有人已经考虑过将HyperLogLog调整为不同的价值估计问题.

algorithm estimation hyperloglog

14
推荐指数
1
解决办法
1240
查看次数

在OCaml中打印当前调用堆栈

在OCaml中是否有办法以编程方式获取当前调用堆栈?通过这个,我不是指调试器内部,而是作为函数调用程序内部将打印当前调用堆栈.我想这不应该超出字节码解释器的能力,特别是如果调试符号可用.

ocaml

9
推荐指数
2
解决办法
1001
查看次数

什么是推荐的Bcrypt C实现?

C中至少有两个Bcrypt实现:

我应该使用哪一个作为新项目的基础?请注意,我不需要向后兼容性,因此我的选择将完全取决于哪个实现被认为是最新的和维护的.另外,我很好奇哪一个用作大多数非C语言绑定的基础.

c security bcrypt

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

GADT何时在GHC中引入?

GADT何时在GHC中引入?(版本+日期)

此外,它们仍然被认为是语言扩展还是它们现在是Haskell标准的一部分?

haskell ghc gadt

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

在事务中出错后回滚

对于那些熟悉Postgresql的人来说,这应该是一个简单的方法:

我的应用程序发出一个begin_work,做了一些操作,然后发出一个commit.操作和提交包含在try-catch块中,其catch语句执行rollback.假设:如果在SQL操作期间发生错误,Postgresql将自动回滚事务,因此我的回滚将是多余的,无害.这个假设是否正确?

(无论如何我还是要回滚的原因:以防万一与SQL操作无关的异常.)

postgresql

6
推荐指数
1
解决办法
5527
查看次数

在可序列化的交易中,所有40级错误是否正常?

我的一些交易被宣布为SERIALIZABLE.有时我会回到40级错误,例如40001 serialization_failure40P01 deadlock_detected(我还没有看到其他代码),特别是当我通过执行大量并发事务对系统进行压力测试时.

如果我正确理解了手册,这是可以预期的.当这些错误发生时,我想要重试该事务.我怀疑在处理SERIALIZABLE事务时是否所有 40级错误都是"正常的".换句话说,我可以假设任何40级错误都会导致我重试该事务,或者这个假设是否仅适用于40级错误的子集?

sql postgresql

5
推荐指数
1
解决办法
165
查看次数