小编shu*_*alo的帖子

如何在Haskell中有效地通过foldr写反向?

注意那个简单的解决方案

reverse a = foldr (\b c -> c ++ [b] ) [] a
Run Code Online (Sandbox Code Playgroud)

由于复杂性的二次增长,效率不高.如果试图使用通常的foldl来折叠转换(盲目),但我的尝试

foldr (\b g x -> g ((\x old -> x:old) x b)) id list []
Run Code Online (Sandbox Code Playgroud)

没有像我预期的那样工作.

haskell

10
推荐指数
2
解决办法
8966
查看次数

用于记录时间戳的不同 C++ 时钟的优缺点是什么?

打印日志时,我希望每条消息都有一个时间戳,测量自程序启动以来的时间。最好以纳秒为单位,尽管毫秒也可以:

(  110 ns) Some log line 
( 1220 ns) Another log line 
( 2431 ns) Now for some computation...
(10357 ns) Error!
Run Code Online (Sandbox Code Playgroud)

据我了解,C++ chrono 库中有三种不同的时钟和另外两种 C 风格的时钟:

  • std::chrono::高分辨率时钟
  • std::chrono::system_clock
  • std::chrono::steady_clock
  • 标准::时间
  • 标准::时钟

对于上述任务,每种方法的优点和缺点是什么?

c++ time c++-chrono

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

比较堆和堆栈中数据的访问性能

众所周知,对于大多数算法来说,在堆栈上分配和释放数据比在堆上这样做要快得多.在C++中,代码的区别就像

double foo[n*n]
Run Code Online (Sandbox Code Playgroud)

double* foo = new int[n*n]
Run Code Online (Sandbox Code Playgroud)

但是,当涉及到堆或堆栈上的数据访问和计算时,有任何显着的差异?也就是说有一个速度差异

foo[i]
Run Code Online (Sandbox Code Playgroud)

代码应该在几种不同的体系结构上运行,因此尝试和测量将不起作用.

heap performance stack

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

乳胶的简单预处理器:检测您是包含文件还是独立编译

我在\ latex工作了一个巨大的脚本.

我希望能够将每个章节编译为独立的,因为使用Latex进行黑客攻击会更容易.

另一方面,我想维护一份文档,其中包含迄今为止编写的整个脚本.

我不知道如何在没有永久烦人开销的情况下维护这两个文档,因为tex文件既可以单独编写,也可以包含在内.

有一个Latex预处理器可用于具有类似C的#define和#ifdef-#else- #endif语句,这将是非常有帮助的.这将在很大程度上促进写作.你知道乳胶中是否存在这样的东西,或者你怎么能做同等的事情?谷歌没有向我提供令人满意的答案.

编辑:一些评论,以避免误解:我知道非常简单的内置TEX预处理器,但这些命令不能正常工作.因此,对这些的引用不会帮助我.

我脚本中的章节应该是这样的(伪代码)

IF being_just_included defined
   %No header here, and document has already begun
ELSE
\input{common_header.tex} %Header things all my documents use
\begin{document}
ENDIF

%%% Lots of stuff

IF being_just_included defined
   %Nothing to do here
ELSE
   \end{document}
END IF
Run Code Online (Sandbox Code Playgroud)

相反,我的完整脚本源文件应如下所示

\input{common_header.tex}
DEFINE being_just_included
\begin{document}
\input{preamble.tex}
\input{first_chapter.tex}
\input{second_chapter.tex}
\input{third_chapter.tex}
\end{document}
Run Code Online (Sandbox Code Playgroud)

你可以发布一个执行类似这样的代码吗?

latex preprocessor typesetting mathematical-typesetting

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

Python和列表推导的表现

假设你在python中有一个列表理解,比如

Values = [ f(x) for x in range( 0, 1000 ) ]
Run Code Online (Sandbox Code Playgroud)

f只是一个没有副作用的函数.所以所有条目都可以独立计算.

与"明显"的实现相比,Python是否能够提高此列表理解的性能; 例如,通过多核CPU上的共享内存并行化?

python performance list-comprehension

6
推荐指数
2
解决办法
2973
查看次数

Libreoffice Calc:将许多带有文本的单元格转换为数字

我的文件中有许多单元格,其内容为

'14.05
Run Code Online (Sandbox Code Playgroud)

我想将这些包含文本的单元格批量转换为我可以计算的数字。

14.05
Run Code Online (Sandbox Code Playgroud)

Libre Office 中是否有用于这种大规模转换的内置功能,或者我是否需要使用宏来摸索?

libreoffice libreoffice-calc

6
推荐指数
2
解决办法
5122
查看次数

是 . - >在C和C++真的是运营商吗?

你可能已被打过,自己也是为了自己.和 - >是检索结构(C)或类(C++)成员的运算符.

但是,我怀疑它们是运算符 - 因为,如果它们是运算符,它们的输入类型是什么?此外,两侧的标识符是相互依赖的 - 例如+运算符缺少的特征.

如果这是正确的 - 在什么意义上这些仍然在实践中被标记为运算符,以及它们在语言理论方面的正式定义是什么.

c c++ programming-languages operators

5
推荐指数
3
解决办法
408
查看次数

实数的数字表示,替代浮点格式

除浮点格式外,还有没有其他描述实数的格式?

特别是,我要求提供与符号计算相比仍能提供可行的计算性能(与浮点数相比)的格式。

谢谢。

附录:我从理论计算机科学的角度对此感兴趣。的确,我找到了一份科学论文,给出了一个(小清单)数字系统来“表示”实数。 perso.ens-lyon.fr/jean-michel.muller/chapitre1.pdf

我承认,“象征”一词含糊不清。我一直在思考像计算之类的mathematica,这是理论CS中使用的术语。顺便说一句,“描述”并不意味着“精确描述”。但是,“浮动”一词并不适用,因为这没有多大意义。但这与实际问题相去甚远,更具哲学意义。

floating-point

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

用于数值稳定性的编译器优化

GCC或类似的编译器执行旨在提高浮点运算的数值稳定性的优化.

众所周知,如果以明显的方式实现,看似简单的添加或计算向量范数的操作在数值上是不稳定的,另一方面,编译器有时为了速度优化而破坏这些问题的解决方法.

优化编译器输出以进行数值稳定计算的最新技术是什么?有什么比等待更好的?

numerical compiler-optimization

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

FPU与软件仿真的性能比较

虽然我知道(所以我被告知)浮点协处理器的工作速度比浮点运算的任何软件实现都快,但我完全没有直觉感觉这个差异有多大,按照数量级.

答案可能取决于应用程序和您的工作地点,微处理器和超级计算机之间.我对计算机模拟特别感兴趣.

你能指出这个问题的文章或论文吗?

floating-point performance scientific-computing fpu

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