字符串做异或使用union

#include <stdio.h>
#include <sys/time.h>
#include <string.h>

union data
{
    unsigned char str[2048];
    unsigned long long ll_value[256];
    unsigned int i_value[512];
};

int main(int argc, char **argv)
{
    union data a;
    union data b;
    struct timeval start, end;
    int i = 0;

    memset((char *)&a, 1, 2048);
    memset((char *)&b, 1, 2048);

    gettimeofday(&start, NULL);
    for (i = 0; i < 2048; i++)
    {
        a.str[i] = a.str[i] ^ b.str[i];
    }
    gettimeofday(&end, NULL);
    printf("take %dus \n", (int)(((end.tv_sec-start.tv_sec)*1000000+end.tv_usec)-start.tv_usec));

    gettimeofday(&start, NULL);
    for (i = 0; i < 256; i++)
    {
        a.ll_value[i] = a.ll_value[i] ^ b.ll_value[i];
    }
    gettimeofday(&end, NULL);
    printf("take %dus \n", (int)(((end.tv_sec-start.tv_sec)*1000000+end.tv_usec)-start.tv_usec));

    gettimeofday(&start, NULL);
    for (i = 0; i < 512; i++)
    {
        a.i_value[i] = a.i_value[i] ^ b.i_value[i];
    }
    gettimeofday(&end, NULL);
    printf("take %dus \n", (int)(((end.tv_sec-start.tv_sec)*1000000+end.tv_usec)-start.tv_usec));

  return 0;
}

take 21us
take 3us
take 5us

时间: 2024-11-06 09:53:53

字符串做异或使用union的相关文章

对字符串做预处理 、 工具类

/**     * 对字符串做预处理     * \s 匹配空格.制表符.换页符等空白字符     */    public static String pretreatString(String str) {        return str.replaceAll("\\s*", "");    }

在CMD中使用for命令对单行字符串做分割的方法

我们都知道CMD中的for命令是执行循环命令的,数据来源可以是一个文件,一个命令的结果或一个字符串,只有这3种来源 如果是一个文件则对这个文件的所有字符串进行循环处理 如果是一个命令结果,那么对这个命令的结果的每一行做循环处理 如果是一个字符串,那么对这个字符串只作一次处理 如:FOR /F ["options"] %variable IN ("string") DO command [command-parameters] 即使使用"Delims=[字符

用不可变字符串跟可变字符串做新闻网页

//不可变字符串方法 //新建一个字符串对象,将文件的内容读出来 NSString *html=[NSString stringWithContentsOfFile:@"/Users/apple/Desktop/txt1.html" encoding:NSUTF8StringEncoding error:nil]; //将文件中的标题替换成我们的标题 NSString *html1=[html stringByReplacingOccurrencesOfString:@"{[

4-7 PHP-务必使用带引号字符串做键值==php把没有引号的建当作常量产生常量开销

<?php define('key','imooc'); $array=array( "key"=>"hello world", "imooc"=>"http://baidu.com" ); echo $array[key]; //如果不用引号 输出的是http://baidu.com echo $array["key"]; //输出的是"hello world",

iOS 对两个相等长度的字符串进行异或运算

+ (NSString *)pinxCreator:(NSString *)pan withPinv:(NSString *)pinv { if (pan.length != pinv.length) { return nil; } const char *panchar = [pan UTF8String]; const char *pinvchar = [pinv UTF8String]; NSString *temp = [[NSString alloc] init]; for (int

2.python基础之—列表,元组,字典,集合,字符串的使用方法

一.关于python序列的简介. python里面的序列大部分都可以执行,索引,切片,加,乘,检查长度,以及检查某个成员是否存在,甚至还可以找出这个序列中最小的元素和最大的元素,并且序列都是可迭代的. 解释下个人理解的迭代,迭代(iteration),序列中的迭代就是对序列中的每个元素重复执行某些操作/ 具体的迭代方式后面会说到. 下面就说说python序列的共有特点. 1.索引 一个序列中,所有的元素都有自己的编号,这个编号是从0开始的,这个编号就是所谓的索引,这些元素可以通过索引来依次访问.

ASP.NET MVC 4 中 Controller 与 ApiController 做读取、新增、更新、删除 ( CRUD )

在 ASP.NET MVC 4 架构上,WebApi ( ApiController ) 较适合做数据处理与提供的动作,而 MVC 4 Web ( Controller ) 内比较要配合 View 层数据显示而做异动,这时候如果要把 ApiController 和 Controller 切开来,那这两个部分的沟通就会很常使用了.如果你是用 MVVM 的架构,在 Model-View View-Model 这两段,若是一页搜集各数据表的某些资料,那在 View 那一段就必须要与 WebApi 沟通

在字符串中删除特定字符

63.在字符串中删除特定的字符.题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”. 思路: 1. 位图法 将两个字符串分别转换成bitmap 然后对他们做异或xor运算,得到的结果即为排除了第二个字符串的所有字符, 然后对该结果依次与原字符串的所有字符进行与运算,结果不为零的即为所得    恩 位图真是个好东西啊...时间复杂度o(n+m) 花在了遍历

PHP内核探索之变量(7)- 不平凡的字符串

切,一个字符串有什么好研究的. 别这么说,看过<平凡的世界>么,平凡的字符串也可以有不平凡的故事.试看: (1)       在C语言中,strlen计算字符串的时间复杂度是?PHP中呢? (2)       在PHP中,怎样处理多字节字符串?PHP对unicode的支持如何? 同样是字符串,为什么c语言与C++/PHP/Java的均不相同? 数据结构决定算法,这句话一点不假. 那么我们今天就来掰一掰,PHP中的字符串结构,以及相关字符串函数的实现. 一.  字符串基础 字符串可以说是PHP中