小编bro*_*sbp的帖子

如何在Makefile中获取脚本?

有没有更好的方法从makefile中获取设置env变量的脚本?

FLAG ?= 0
ifeq ($(FLAG),0)
export FLAG=1
/bin/myshell -c '<source scripts here> ; $(MAKE) $@'
else
...targets...
endif
Run Code Online (Sandbox Code Playgroud)

shell makefile

71
推荐指数
6
解决办法
6万
查看次数

原子比较C中两个整数的最快方法?

uint64_t n;      // two 32-bit integers

return ( (uint32_t)(n >> 32) == (uint32_t)n );
Run Code Online (Sandbox Code Playgroud)

将32个最高有效位与uint64_t的32个最低有效位进行原子比较的最快方法是什么?

我认为一个可怕的解决方案是:获取自旋锁,读取32 LSB,读取32 MSB,比较得到结果,释放自旋锁,返回结果.有没有办法做到这一点,而不必采取螺旋锁?

c caching atomic bit

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

懒惰IO +并行:将图像转换为灰度

我试图将并行性添加到将.bmp转换为灰度.bmp的程序中.我发现并行代码的性能通常会低2-4倍.我正在调整parBuffer/chunking大小,但似乎仍无法推理它.寻找指导.

这里使用的整个源文件:http://lpaste.net/106832

我们Codec.BMP用来读取由...表示的像素流type RGBA = (Word8, Word8, Word8, Word8).要转换为灰度,只需在所有像素上映射"亮度"变换.

串行实现字面意思是:

toGray :: [RGBA] -> [RGBA]
toGray x = map luma x
Run Code Online (Sandbox Code Playgroud)

测试输入.bmp是5184 x 3456(71.7 MB).

串行实现运行在~10s,~550ns /像素.Threadscope看起来很干净:

串行

为什么这么快?我想它有懒惰的ByteString(即使Codec.BMP使用严格的ByteString - 这里是否发生了隐式转换?)和融合.

添加并行性

添加并行性的第一次尝试是通过parList.好家伙.该程序使用~4-5GB内存并开始交换系统.

然后我读了Simon Marlow的O'Reilly书中的"使用parBuffer并行化Lazy Streams"部分并尝试parBuffer了大尺寸.这仍然没有产生理想的性能.火花尺寸非常小.

然后我尝试通过分块懒惰列表然后坚持parBuffer并行性来增加火花大小:

toGrayPar :: [RGBA] -> [RGBA]
toGrayPar x = concat $ (withStrategy (parBuffer 500 rpar) . map (map luma))
                       (chunk 8000 x)

chunk :: Int -> [a] -> [[a]]
chunk n [] …
Run Code Online (Sandbox Code Playgroud)

parallel-processing haskell

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

x86 128位原子操作

你将如何在x86中实现128位原子操作?

英特尔系统编程指南,第1部分,8.1锁定原子操作指定保证16位,32位和64位原子操作.那么,你能用2个带有LOCK前缀的64位操作来实现128位原子操作吗?就像是...

LOCK mov 64bits->addr
LOCK mov 64bits->addr+64bits
Run Code Online (Sandbox Code Playgroud)

显然,SSE具有128位XMM寄存器.你能用这些寄存器进行128位比较和交换吗?

x86 assembly x86-64 atomic

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

函数和非归纳类型

我正在研究Typeclassopedia中的Functors部分.

一个简单的直觉是Functor代表某种"容器",以及将函数统一应用于容器中的每个元素的能力.

好.因此,对于像列表或树这样的归纳类型,仿函数看起来非常自然.

如果元素的数量固定为较小的数字,Functors也会显得非常简单.例如,使用Maybe你只需要关注"Nothing"或"Just a" - 两件事.

那么,你如何制作类似图形的东西,可能有循环,一个Functor的实例?我认为更普遍的方式是,非归纳类型如何"适应"Functors?


我越是想到它,我就越意识到归纳/非归纳并不重要.归纳类型更容易定义fmap...

如果我想将图形作为Functor的一个实例,我将不得不在fmap中实现图形遍历算法; 例如,它可能必须使用一个辅助函数来跟踪被访问的节点.在这一点上,我现在想知道为什么还要把它定义为Functor而不仅仅是把它作为一个函数本身?例如地图vs fmap列表......?

我希望有经验,有战争故事和伤疤的人可以解释一下.谢谢!

haskell

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

将两个关联列表与正在运行的累加器合并

基本上,我会把它描述为一个联合/合并[(,)]与一对正在运行的累加器snd......这是否有一种优雅的方式来实现它?

(请仅在回答问题的上下文中引用我的代码.如果您想查看我的代码,那也会很棒,但请在其他网站上执行此操作:https://codereview.stackexchange.com/questions/54993 /合并时间序列)

时间序列,

data Model a where
  Variant  :: [(Day, a)] -> Model a
  deriving (Show)
Run Code Online (Sandbox Code Playgroud)

...其中type ain [(Day, a)]基本上代表"总余额",例如银行账户.

一些示例数据,

day1 = fromGregorian 1987 10 17
day2 = fromGregorian 1987 10 18
day3 = fromGregorian 1987 10 19
day4 = fromGregorian 1987 10 20
day5 = fromGregorian 1987 10 21
day6 = fromGregorian 1987 10 22

m1 = Variant [(day1, 1), (day3, 3), (day5, 5)] :: Model Integer …
Run Code Online (Sandbox Code Playgroud)

haskell

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

AngularJS:可以在同一个指令中进行清理和链接吗?

如果我尝试使用linky过滤代码段,则不再对输入进行清理/渲染/'html-ized'.即我希望能够结合两者的效果:

<div ng-bind-html="snippet"></div>
Run Code Online (Sandbox Code Playgroud)

<div ng-bind-html="snippet | linky"></div>
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/5uSnj/

javascript angularjs

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

从python中的套接字读取二进制数据

当我运行以下python示例代码时,

tick = 0
while True:
    tick += 1
    print tick
    data = s.recv(1024)
    if (tick == 1) and data:
        print 'from client: %s' %(data)
    elif (tick == 2) and data:
        print 'from client: %s' %(data)
Run Code Online (Sandbox Code Playgroud)

我知道了,

1
from client: client msg
2
from client: ?
3
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我第二次调用s.recv()实际上返回了一些数据.我相当肯定客户端没有发送`?' 字符.

所以我修改了希望打印`data'的第一个字节的代码,

    elif (tick == 2) and data:
        print 'from client: %s' %(data)
        print struct.unpack("!B", data)
Run Code Online (Sandbox Code Playgroud)

但后来我得到一个回溯声明:"struct.error:unpack需要一个长度为1的字符串参数."

struct包似乎是处理套接字数据的标准方法.但是,这种情况似乎很奇怪.我通过打印和看到"?"来直观地接收数据.并且代码在条件中也有"和数据"但我无法解压缩.

是否有不同的方法来处理套接字的二进制数据?

python sockets binary parsing

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

JavaScript:如何将字典转换为元素列表?

什么是最优雅的方式来解决这个问题:

{
    'a': 'aa',
    'b': 'bb'
}
Run Code Online (Sandbox Code Playgroud)

进入这个:

[
    ['a', 'aa'],
    ['b', 'bb']
]
Run Code Online (Sandbox Code Playgroud)

javascript

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