比较两个字符串的最佳或最快方法是什么?

2024-01-01

我不确定下面的代码有多快。如果有人知道比这更快/优化的代码,请告诉我。

int xstrcmp(char *s1, char *s2)
{
  while (*s1 == *s2++)
            if (*s1++ == 0)
                    return (0);
  return (*(const unsigned char *)s1 - *(const unsigned char *)(s2-1));
}

Use ::strcmp而不是你自己的手卷版本。您的编译器供应商很可能有一个仅汇编版本,该版本使用特定于 CPU 的功能进行比较(例如,SSE4.2 有用于快速字符串比较的特殊指令。)例如,MSVC 版本是用汇编语言编写的,并使用更大的比较(整个字)而不是单个字符)尽可能多地使用特殊大小写未对齐的字符串开头/结尾(如果您安装了 VS2010,则它位于VC/crt/src/intel/strcmp.asm.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较两个字符串的最佳或最快方法是什么? 的相关文章

  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • 根据用户选择将 MYSQL 表中的数据输出为 HTML 表单

    我有一个 MYSQL 表 roomcost 用于保存租用房间的成本 costID Room Cost 1 room1 15 2 room2 30 3 room3 50 rsRoomCost SQL 是 SELECT FROM roomcos
  • 通过反射和使用 Class.cast() 进行投射[重复]

    这个问题在这里已经有答案了 可能的重复 Java Class cast 与强制转换运算符 https stackoverflow com questions 1555326 java class cast vs cast operator
  • 删除 jgit 未按预期工作的分支

    我正在尝试使用 jgit 删除我的存储库中的一个分支 DeleteBranchCommand command git branchDelete command setBranchNames myBranch command setForce
  • 如何获取网页上任意指定像素的颜色? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我最初的搜索表明 出于安全原因 我可能无法执行此操作 但无论如何我都会询问 我怎样才能得到的颜色any网页上的指定像素 更具体地说 这是我自
  • 使用访问令牌下载 bitBucket 私有存储库的 powershell 脚本

    我试图通过首先从 bitbucket 获取代码来自动化构建过程 如下所示 output E FileName xyz url https bitbucket org WhatEver WhatEverBranchName get maste
  • 如何在 HTML 中创建小空间?

    有长破折号和短破折号 是否有一个 en 相当于 有没有一个en相当于纯Ascii 32 我想要一个更好的方式来写这个 123 span class spanen nbsp span 456 span class spanen nbsp sp
  • 从 CGI C 模块返回 http 错误代码

    我有一个用 C 编写的 CGI 模块 在某些情况下我想从该模块返回 HTTP 错误 400 问题是 我不知道如何从模块返回 HTTP 错误 看起来像我的模块中的 return 1 返回 500 内部服务器错误 我尝试过退回 400 等 但还
  • 使用 Android lrucache 的示例

    我需要帮助了解 androids LruCache 我想用来将图像加载到我的网格视图中 以便更好地加载 滚动 有人可以发布使用 LruCache 的示例代码吗 提前致谢 下面是我为使用 LruCache 制作的一个类 这是基于演示的事半功倍
  • 如果通过引用捕获异常,可以修改它并重新抛出吗?

    该标准是否对通过引用捕获的异常以及尝试修改它会发生什么有任何规定 考虑以下代码 class my exception public std logic error public std vector
  • php header excel 和 utf-8

    ob start echo D s ui header Content Type application vnd ms excel charset utf 8 header Content type application x msexce
  • 我可以使用 twiml 向传入的 twilio 呼叫发送数字吗?

    我有一个 twilio 号码 可以使用 twiml 处理来电 这些来电希望接听者在呼叫接通后按一些数字 如果我要拨打电话 我可以使用sendDigits的属性
  • 对象与字典:如何组织数据树?

    我正在编程某种模拟 其数据组织在树中 主要对象是World其中包含一堆方法和一个列表City对象 每个City对象又具有一堆方法和一个列表Population对象 Population对象没有自己的方法 它们只是拥有属性 我的问题是关于后者
  • Pymongo - ValueError:使用 insert_many 时 NaTType 不支持 utcoffset

    我正在尝试将文档从一个数据库增量复制到另一个数据库 某些字段包含以下格式的日期时间值 2016 09 22 00 00 00 而其他的则采用这种格式 2016 09 27 09 03 08 988 我像这样提取并插入文档 pd DataFr
  • 无法识别“nuget”,但其他 nuget 命令可以工作

    我正在尝试使用创建一个 nuget 包http docs nuget org docs creating packages creating and publishing a package From a convention based
  • tkinter 粘性不适用于某些框架

    我正在使用 tkinter 编写纸牌游戏 但我在网格布局管理器 粘性 配置方面遇到了问题 我希望帮助修复我的代码以使框架显示在所需的位置 在我的代码和下面的插图中 有一个框架 b2 其中包含另外两个框架 一个绿色 b2a 一个红色 b2b
  • Java 到 XSD 或 XSD 到 Java

    我知道 使用 JAXB 您可以从 XSD 生成 Java 文件 http www javaworld com javaworld jw 06 2006 jw 0626 jaxb html你也可以从带注释的 POJO 生成 XSD https
  • MVVM DialogService 替代方案

    在学习如何使用 MVVM 模式进行编程时 我遇到了一个常见问题 显示 ViewModel 中的各种对话框 起初它对我来说看起来很简单 我创建了一个 IWindowService 接口 并在 WindowService 类中实现它 我使用此类
  • Javascript webkit-fake-url

    当将图像 例如 从剪贴板粘贴到 webkit 可编辑内容区域时 这是可能的 源代码如下所示 webkit fake url DCAC99B9 BA40 4BA7 A419 9C60AAB081DA image png 能够通过javascr
  • Javascript - “++i”如何工作?

    在尝试使用 i 和 i 之后 我找不到在 for 循环中使用它们的结果之间的差异 例如 for var i 0 i lt 10 i console log i 会产生 0 1 2 3 4 5 6 7 8 9 难道不应该打印出从 1 到 10
  • 比较两个字符串的最佳或最快方法是什么?

    我不确定下面的代码有多快 如果有人知道比这更快 优化的代码 请告诉我 int xstrcmp char s1 char s2 while s1 s2 if s1 0 return 0 return const unsigned char s