c快速产生随机字符串-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3977236
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: c/c

2006-12-22 17:35:18

如何快速产生随机字符串, 可见字符的ascii范围为: 0x20~0x7e.
一般人可能就可以会直接用:

for (i = 0; i < len - 1; i )
  p[i] = rand() % (0x7e 0x20) 0x20;
p[i] = '\0';

但是这样会比下面慢很多, 我在rh9, gcc-3.2.2-5下面测试下面的方法要比上面快2倍以上.
当然测试的时候一定要使用大的字符空间比如30m, 60m ...

下面分析以下原因:
现在一般机器为32位机, 可以一次性直接运算32bit, 这样就比8bit运算要快很多.



char *gen_str(char *pstr, size_t len)
{
  int i;
  char *p;
  uint32_t *p32;

  len -= 1;
  p = pstr;
  p32 = (uint32_t )pstr;
  for (i = 0; i < len / 4; i)
    p32[i] = (rand() | 0x20202020) & 0x7e7e7e7e;

  i = i * 4;

  for (; i < len; i)
    p[i] = rand() % (0x7e 0x20) 0x20;
  p[i] = '\0';

  return (pstr);
}

阅读(4438) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图