我想写一些像正则表达式:
SRC:="a.dat.1 a.dat.2"
$(SRC): %.dat.%: (\\1).rlt.(\\2)
dat2rlt $^ $@
Run Code Online (Sandbox Code Playgroud)
这样a.dat.1和a.dat.2将给出a.rlt.1和a.rlt.2.
在GNU Make info页面中,它显示"%只能使用一次".
在GNU Make中有一些技巧可以实现吗?
我知道将 vdso=0 传递给内核可以关闭此功能,并且 glibc 中的动态链接器可以自动检测和使用内核中的 vdso 功能。
在这里我遇到了这个问题。在我的机构中有一个 RHEL 5.6 框(内核 2.6.18-238.el5),我只有普通用户访问权限,可能患有RHEL 错误 673616。
当我在其上编译 linux-headers-3.9/gcc-4.7.2/glibc-2.17/binutils-2.23 的工具链时,gcc bootstrap 在 stage2 中的 cc1 中失败无法运行
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaaaaca6eb in ?? ()
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x00002aaaaaaabba0 0x00002aaaaaac3249 Yes (*) /home/benda/gnto/lib64/ld-linux-x86-64.so.2
0x00002aaaaacd29b0 0x00002aaaaace2480 Yes (*) /home/benda/gnto/usr/lib/libmpc.so.3
0x00002aaaaaef2cd0 0x00002aaaaaf36c08 Yes (*) /home/benda/gnto/usr/lib/libmpfr.so.4
0x00002aaaab14f280 0x00002aaaab19b658 Yes (*) /home/benda/gnto/usr/lib/libgmp.so.10
0x00002aaaab3b3060 0x00002aaaab3b3b50 Yes (*) /home/benda/gnto/lib/libdl.so.2
0x00002aaaab5b87b0 0x00002aaaab5c4bb0 Yes (*) /home/benda/gnto/usr/lib/libz.so.1
0x00002aaaab7d0e70 0x00002aaaab80f62c Yes (*) /home/benda/gnto/lib/libm.so.6 …Run Code Online (Sandbox Code Playgroud) 我通过py ++/boost.python将C++数据密集库与Python连接起来.在对我的程序进行概要分析后,我发现70%的运行时间花费在这样的代码上:
ni = range(v2o.getHits())
tau = np.array([v2o.TofCorrectedTime[i] for i in ni])
q = [v2o.getCharge()[i] for i in ni]
Run Code Online (Sandbox Code Playgroud)
v2o.TofCorrectedTime键入__array_1_float_2368从PY ++.v2o.getCharge()也是从py ++中键入的_impl_details_range_iterator_.大小约为2000,从这些py ++数组包装器到numpy的转换很慢:
In [42]: timeit np.array(v2o.TofCorrectedTime)
100 loops, best of 3: 2.52 ms per loop
In [43]: timeit np.array(v2o.getCharge())
100 loops, best of 3: 4.94 ms per loop
In [44]: timeit np.array([0]*2368)
1000 loops, best of 3: 310 µs per loop
In [45]: timeit np.array(np.zeros(2368))
100000 loops, best of 3: 4.41 …Run Code Online (Sandbox Code Playgroud)