相关疑难解决方法(0)

如何分析在Linux上运行的C++代码?

我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?

c++ unix profiling

1732
推荐指数
12
解决办法
49万
查看次数

为什么这个F#代码这么慢?

Levenshtein在C#和F#中的实现.对于两个大约1500个字符的字符串,C#版本快10倍.C#:69 ms,F#867 ms.为什么?据我所知,他们完全一样吗?无论是Release还是Debug构建都无关紧要.

编辑:如果有人来这里专门寻找编辑距离实施,它就会被打破.工作代码在这里.

C#:

private static int min3(int a, int b, int c)
{
   return Math.Min(Math.Min(a, b), c);
}

public static int EditDistance(string m, string n)
{
   var d1 = new int[n.Length];
   for (int x = 0; x < d1.Length; x++) d1[x] = x;
   var d0 = new int[n.Length];
   for(int i = 1; i < m.Length; i++)
   {
      d0[0] = i;
      var ui = m[i];
      for (int j = 1; j < n.Length; j++ )
      { …
Run Code Online (Sandbox Code Playgroud)

c# performance f# inline

125
推荐指数
1
解决办法
2万
查看次数

我如何将Haskell类型类转换为F#?

我正在尝试将Haskell核心库的Arrows转换为F#(我认为这对于更好地理解Arrows和F#是一个很好的练习,我可能能够在我正在开发的项目中使用它们.)但是,直接翻译由于范式的不同,是不可能的.Haskell使用类型类来表达这些东西,但我不确定F#构造最好用F#的习语映射类型类的功能.我有一些想法,但最好把它提到这里,看看哪些被认为是最接近的功能.

对于tl; dr crowd:我如何将类型类(一个Haskell成语)翻译成F#惯用代码?

对于那些接受我长篇解释的人:

来自Haskell标准库的代码是我正在尝试翻译的一个例子:

class Category cat where
    id :: cat a a
    comp :: cat a b -> cat b c -> cat a c
class Category a => Arrow a where
    arr :: (b -> c) -> a b c
    first :: a b c -> a (b,d) (c,d)

instance Category (->) where
    id f = f
instance Arrow (->) where
    arr f = f
    first f = f *** id
Run Code Online (Sandbox Code Playgroud)

尝试1:模块,简单类型,让绑定

我的第一个镜头是直接使用模块组织来映射事物,例如:

type Arrow<'a,'b> …
Run Code Online (Sandbox Code Playgroud)

oop f# haskell functional-programming typeclass

43
推荐指数
2
解决办法
6425
查看次数

为什么F#inline会导致11倍的性能提升

我正在研究一些重的cpu绑定问题.当我使用inline关键字时,我看到了很大的性能提升.我从标准.net库创建一个字典,传入自定义密钥Comparer,请参阅下面的代码和时序结果

https://gist.github.com/4409734

在Eq_cmp上没有内联关键字

> perf_run 10000000 ;;
Real: 00:00:11.039, CPU: 00:00:11.029, GC gen0: 771, gen1: 3, gen2: 1
val it : unit = ()
Run Code Online (Sandbox Code Playgroud)

在Eq_cmp上使用内联关键字

perf_run 10000000 ;;
Real: 00:00:01.319, CPU: 00:00:01.388, GC gen0: 1, gen1: 1, gen2: 1
val it : unit = ()
> 
Run Code Online (Sandbox Code Playgroud)

我还注意到Gen 0 GC与内联代码和非内联代码的巨大差异.

有人可以解释为什么会有这么大的差异吗?

.net performance f# struct inline

19
推荐指数
2
解决办法
1483
查看次数