小编Jen*_*ens的帖子

编译用于高放射性环境的应用程序

我们正在编译嵌入式C/C++应用程序,该应用程序部署在受电离辐射轰击的环境中的屏蔽设备中.我们正在使用GCC和ARM进行交叉编译.部署后,我们的应用程序会生成一些错误的数据,并且比我们想要的更频繁地崩溃.硬件专为此环境而设计,我们的应用程序已在此平台上运行了数年.

我们可以对代码进行更改,还是可以进行编译时改进,以识别/纠正由单个事件干扰引起的软错误和内存损坏?是否有其他开发人员能够成功地减少软错误对长期运行的应用程序的有害影响?

c c++ embedded gcc fault-tolerance

1414
推荐指数
20
解决办法
11万
查看次数

如何实现每个周期4个FLOP的理论最大值?

如何在现代x86-64 Intel CPU上实现每个周期4个浮点运算(双精度)的理论峰值性能?

据我所知,SSE 需要三个周期,addmul大多数现代Intel CPU需要五个周期才能完成(参见例如Agner Fog的"指令表").由于流水线操作,add如果算法具有至少三个独立的求和,则每个周期可以获得一个吞吐量.因为打包addpd和标量addsd版本都是如此,并且SSE寄存器可以包含两个,double每个周期的吞吐量可以高达两个触发器.

此外,似乎(虽然我没有看到任何适当的文档)add并且mul可以并行执行,给出每个周期四个触发器的理论最大吞吐量.

但是,我无法使用简单的C/C++程序复制该性能.我最好的尝试导致大约2.7个翻牌/周期.如果有人可以贡献一个简单的C/C++或汇编程序,它可以表现出非常高兴的峰值性能.

我的尝试:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/time.h>

double stoptime(void) {
   struct timeval t;
   gettimeofday(&t,NULL);
   return (double) t.tv_sec + t.tv_usec/1000000.0;
}

double addmul(double add, double mul, int ops){
   // Need to initialise differently otherwise compiler might optimise away
   double sum1=0.1, sum2=-0.1, sum3=0.2, sum4=-0.2, sum5=0.0;
   double mul1=1.0, mul2= 1.1, mul3=1.2, mul4= 1.3, …
Run Code Online (Sandbox Code Playgroud)

c c++ architecture optimization assembly

618
推荐指数
4
解决办法
7万
查看次数

为什么现代Perl默认会避免使用UTF-8?

我想知道为什么使用Perl构建的大多数现代解决方案默认情况下不启用UTF-8.

我知道核心Perl脚本存在许多遗留问题,可能会破坏它们.但是,从我的角度来看,在21 的世纪,新的大项目(或具有大的方面讲项目)应该从头开始他们的软件UTF-8的证明.我仍然没有看到它发生.例如,Moose启用严格和警告,但不启用Unicode.Modern :: Perl也减少了样板,但没有UTF-8处理.

为什么?是否有一些理由在2011年的现代Perl项目中避免使用UTF-8?


评论@tchrist太长了,所以我在这里添加它.

似乎我没有说清楚.让我尝试添加一些东西.

tchrist和我看到情况非常相似,但我们的结论完全是相反的.我同意,Unicode的情况很复杂,但这就是为什么我们(Perl用户和编码人员)需要一些层(或编译指示),这使得UTF-8处理变得像现在一样容易.

tchrist指出要涵盖的许多方面,我会阅读并思考它们几天甚至几周.不过,这不是我的观点.tchrist试图证明没有一种方法"启用UTF-8".我没有太多的知识可以与之争辩.所以,我坚持住实例.

我和Rakudo一起玩,UTF-8就在我需要的地方.我没有任何问题,它只是奏效了.也许在某些地方存在一些限制,但一开始,我测试的所有工作都按照我的预期进行.

这不应该是现代Perl 5的目标吗?我更强调一点:我不是建议将UTF-8作为核心Perl的默认字符集,我建议可以为那些开发项目的人快速触发它.

另一个例子,但更负面的语气.框架应该使开发更容易.几年前,我尝试过Web框架,但只是把它们扔掉了,因为"启用UTF-8"是如此模糊.我没有找到如何以及在何处挂钩Unicode支持.这是非常耗时的,我发现它更容易走老路.现在我看到这里有一个赏金来处理与梅森 2 相同的问题:如何让Mason2 UTF-8干净?.因此,它是一个非常新的框架,但使用UTF-8需要深入了解其内部.这就像一个大红色标志:停止,不要使用我!

我真的很喜欢Perl.但处理Unicode是痛苦的.我仍然发现自己在墙上奔跑.某种方式tchrist是正确的,并回答我的问题:新项目不吸引UTF-8,因为它在Perl 5中太复杂了.

unicode perl utf-8

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

如何向shell脚本添加进度条?

在bash或*NIX中的任何其他shell中编写脚本时,在运行将需要几秒钟的命令时,需要一个进度条.

例如,复制一个大文件,打开一个大的tar文件.

您建议以哪些方式向shell脚本添加进度条?

bash shell zsh

390
推荐指数
18
解决办法
30万
查看次数

在CentOS 7上打开防火墙端口

我使用的是CentOS 7,我必须确保端口2888和3888是开放的.

我读过这篇文章,但这没有用,因为在CentOS 7操作系统上没有iptables save命令.

有人告诉我,上面的URL对CentOS 7无效,我应该遵循这个.但是这篇文章并不清楚我究竟需要执行什么命令.

我也找到了

firewall-cmd --zone=public --add-port=2888/tcp 
Run Code Online (Sandbox Code Playgroud)

但这并不能重新启动.

那么我怎样才能打开端口并使其重新启动?

port firewall centos

331
推荐指数
8
解决办法
85万
查看次数

使用Sed替换包含字符串的整行

我有一个文本文件,其中有一个特定的行

sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext
Run Code Online (Sandbox Code Playgroud)

我需要替换上面的整行

This line is removed by the admin.
Run Code Online (Sandbox Code Playgroud)

搜索关键字是 TEXT_TO_BE_REPLACED

我需要为此编写一个shell脚本.我怎样才能实现这个目的sed

string shell sed

296
推荐指数
5
解决办法
47万
查看次数

195
推荐指数
2
解决办法
3万
查看次数

fork()分支超过预期?

考虑以下代码:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void)
{
    int i;
    for(i = 0; i < 2; i++)
    {
        fork();
        printf(".");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序输出8个点.怎么可能呢?不应该有6个点吗?

c c++ fork

186
推荐指数
2
解决办法
7467
查看次数

如何删除Bash功能?

我这样做了:

$ z() { echo 'hello world'; }
Run Code Online (Sandbox Code Playgroud)

我怎么摆脱它?

bash shell zsh

170
推荐指数
2
解决办法
3万
查看次数

$$在shell中意味着什么?

我曾经读过,在shell中为临时文件获取唯一文件名的一种方法是使用双美元符号($$).这会产生一个随时变化的数字......但是如果你反复调用它,它会返回相同的数字.(解决方案是使用时间.)

我很想知道究竟$$是什么,以及为什么它会被建议作为生成唯一文件名的方法.

shell scripting

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