2009-02-08 60 views
10

如果我想要更多速度,特別是當我只寫一次性腳本時,我已經厭倦了爲多核心而明確編寫代碼。我的開發盒已經有8個核心,這個數字比時鐘速度快得多。功能語言似乎提供了一個潛在的逃生艙口,但我還沒有努力去掌握其中的一個。功能代碼有哪些令人印象深刻的例子?

我很想看到,比非功能性的替代品更好和/或更多並行的實際代碼一些樣本塊。我對語言並不挑剔 - 我對這些概念更感興趣。

謝謝!

+0

作爲一個具有8個內核的開發盒,你在運行什麼? – 2009-02-08 06:28:22

+0

我的猜測是雙核四核 – 2009-02-08 07:38:01

+0

是的 - 它是一個雙核四核戴爾服務器。 – twk 2009-02-08 16:09:00

回答

6

如何MapReduce?它是令人難以置信的可並行化的,儘管它沒有在函數式​​語言中實現,但它的靈感來源於Lisp的mapreduce

1

在第20章(「編程多核CPU」)Programming Erlang中有一個使用mapreduce的文本索引器/搜索器的擴展示例。我不知道這是多麼令人印象深刻,但它看起來像代碼凡人可以寫。

1

LINQ是一個很好的例子主流語言的函數式編程。物化代碼和單子?在MY C#中? :)無論如何,w.r.t.線程,有提到Parallel LINQ。通過使用不變性和更高階的函數(也許是Expression),庫可以爲我們並行化事物。

而另一個鏈接到F#與async workflows。令人印象深刻的是能夠採用同步代碼,並且通過一些小標註將其轉換爲異步代碼。代碼保留了許多您可能使用的命令性質。你不必完全改變事物來利用它;編譯器通過處理它。

0

開玩笑說的功能代碼最大的例子是不寫的代碼我的一個老師。