小编gre*_*n_t的帖子

C中用于比特反转的最有效算法(从MSB-> LSB到LSB-> MSB)

实现以下目标的最佳算法是什么:

0010 0000 => 0000 0100

转换从MSB-> LSB到LSB-> MSB.所有位必须反转; 也就是说,这不是字节顺序交换.

c algorithm bit-manipulation

232
推荐指数
11
解决办法
22万
查看次数

从套接字读取1个字节一次与读取大块

有什么区别 - 性能方面 - 从套接字读取1个字节一次到读取大块?

我有一个C++应用程序,需要从Web服务器提取页面并逐行解析收到的页面.目前,我一次读取1个字节,直到遇到CRLF或达到最大1024字节.

如果读取大块(例如一次1024个字节)在性能方面要好得多,那么关于如何实现我目前所拥有的相同行为的任何想法(即能够一次存储和处理1个html行 - 直到CRLF还没有消耗后续的字节)?

编辑:

我买不起太大的缓冲区.由于应用程序用于嵌入式设备,因此我的代码预算非常紧张.我更喜欢只保留一个固定大小的缓冲区,最好一次只保留一个html行.这使我的解析和其他处理变得容易,因为我随时尝试访问缓冲区进行解析,我可以假设我正在处理一个完整的html行.

谢谢.

c c++ sockets cgi

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

pthread_cancel在arm和ppc上表现不同?

我目前正在开发一个可以部署在arm和ppc架构上的多线程应用程序.我手臂上的pthread_cancel有问题.

手臂上的pthread_cancel与ppc的行为不同.线程被取消但是没有在arm上调用线程局部变量的析构函数.我还尝试显式定义通过pthread_cleanup_push安装的取消清理处理程序例程.但是当线程被取消时它没有被调用.

该代码适用于ppc.取消线程时,正在调用局部变量的析构函数.当我明确定义一个清理处理程序时,它在调用pthread_cancel时被调用并执行.

我错过了什么吗?一些编译器选项也许?

  • 编程语言:C++
  • 编译器:arm-linux-g ++/powerpc-linux-g ++
  • 操作系统:Linux

编辑:

我发现在这个libc bug上记录了一些类似的问题.

使用gcc而不是g ++并添加-fno-exception编译器选项就可以了.但我真的想了解这个问题背后的原因.此外,-fno-exception意味着我将无法在我的应用程序中执行异常处理,而不是我现在正在使用它,但我可能在将来.

谢谢.

embedded arm pthreads

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

分析用C或C++编写的程序

你会建议什么是分析C/C++代码并确定哪些部分花费最多时间的最佳工具.目前,我只是依赖于日志,但由于引入了不必要的延迟,因此信息不准确.

优选地,如果存在这样的工具,该工具还能够检测/建议可以优化的区域.

平台:Linux

应用程序应在嵌入式环境中使用,因此它应该是轻量级和外部的(不是某些IDE上的插件).

c c++ profile

4
推荐指数
2
解决办法
874
查看次数

多字节字符串的正则表达式字边界

我在我的搜索应用程序上使用posix c正则表达式库(regcomp/regexec).我的应用程序支持不同的语言,包括使用多字节字符的语言.我在使用字边界元字符(\ b)时遇到了问题.对于单字节字符串,它工作得很好,例如:

"\ bpaper\b"匹配"纸"

但是,如果正则表达式和查询字符串是多字节的,它似乎无法正常工作,例如:

"\ b纸张\ b"与"纸张"不符

我错过了什么吗?任何帮助将受到高度赞赏.

请求的信息:

  • 编程语言:C
  • 正则表达式库:GNU C(regex.h)

谢谢.

regex unicode

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

标签 统计

c ×3

c++ ×2

algorithm ×1

arm ×1

bit-manipulation ×1

cgi ×1

embedded ×1

profile ×1

pthreads ×1

regex ×1

sockets ×1

unicode ×1