小编Pet*_*ter的帖子

为什么我的并行代码运行得很差?

我一直在尝试并行化我的 Haskell 代码,但它变得越来越慢,所以我制作了一些示例代码来显示我的问题,这里是串行代码:

module Main where

import System.Environment

sumRangeSquares :: (Num a, Enum a) => a -> a -> a
sumRangeSquares start end = sum $ map (^2) [start .. end]

main :: IO ()
main = do
    [start, end] <- map read <$> getArgs
    print $ sumRangeSquares start end
Run Code Online (Sandbox Code Playgroud)

编译并stack ghc -- -O2 -rtsopts -eventlog -threaded src/Main.hs运行 time ./src/Main 1 10000000,大约 0.4 秒完成

现在明显的并行对应物是:

module Main where

import Control.Parallel.Strategies
import System.Environment

sumRangeSquares :: (Num a, Enum …
Run Code Online (Sandbox Code Playgroud)

parallel-processing haskell

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

如何通过参数的某些质量而不是其确切类型来指定参数类型?

所以我在 C++ 中有一个函数,如下所示:

void print_vec(std::vector<int> v) {
  for (int i: v) {
    std::cout << i << ' ';
  }
  std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

哪个有效,但仅适用于 int 向量。我想要类似的东西

void print_iter(Iterable<CanDoCout> iterable) {
  for (auto i: iterable) {
    std::cout << i << ' ';
  }
  std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我如何实施print_iter?或者我怎样才能找出如何实现这样的通用函数?

c++ typing

0
推荐指数
1
解决办法
90
查看次数

标签 统计

c++ ×1

haskell ×1

parallel-processing ×1

typing ×1