相关疑难解决方法(0)

strlen性能实现

这是一个多功能问题:

  • 这与glibc strlen实现相比如何?
  • 有没有更好的方法来实现这一点和自动向量化.

随机填充垃圾,因为stackoverflow以某种方式比我更了解代码到汇总比率

#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <stdbool.h>
#include <stdlib.h>

/* Todo: Document */
#define WORD_ONES_LOW   ((size_t)-1 / UCHAR_MAX)
#define WORD_ONES_HIGH  (((size_t)-1 / UCHAR_MAX) << (CHAR_BIT - 1))

/*@doc
 * @desc: see if an arch word has a zero
 * #param: w - string aligned to word size
 */
static inline bool word_has_zero(const size_t *w)
{
    return ((*w - WORD_ONES_LOW) & ~*w & WORD_ONES_HIGH);
}

/*@doc
 * @desc: see POSIX strlen() …
Run Code Online (Sandbox Code Playgroud)

c string performance strlen

8
推荐指数
1
解决办法
2381
查看次数

魔法位如何改进 glibc 中的 strlen 函数

我正在查看glibc 的 strlen的来源。他们用来magic bits求字符串的长度。有人可以解释一下它是如何工作的吗?谢谢

c glibc strlen

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

在glibc中strncpy实现过于复杂

我正在尝试理解string.h函数.这是我自己的strncpy()实现

char * my_strncpy(char *dst, const char* src, int n)
{
    char *orig = dst;
    const char *hold = src;
    int count = 0, remain = 0;
    while(*(hold++))
            count++;
    if ( n > count )
    {
            remain = n - count;
            n = count;
    }
    while(n--)
            *dst++ = *src++;
    while(remain--)
            *dst++ = '\0';
    return orig;
}
Run Code Online (Sandbox Code Playgroud)

但是在看这里的 glibc实现时,我想知道为什么它太大而复杂.

我使用" time "命令测试了执行时间.两个功能几乎相同.
有人可以分享关于glibc strncpy()的知识以及我在my_strncpy()中缺少的知识.

c glibc strncpy

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

用 C 重写 strlen()

如果有人想尝试在 中重写字符串函数C,这段代码是否可以替代标准strlen()函数?我一直无法运行此代码,因为我坐在车里用 iPhone 打字。

int strlen(char * s) {
      int i = 0, sum = 0;
      char c = s[0];

      while(c != '\0') {
            sum++;
            c = s[++i];
      }
      return sum;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的反馈!

c string function

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

C字符串函数的实现

我想知道字符串操作函数是如何在内部实现的,所以我可以弄清楚它们的性能.有没有办法找到这个?

我在谈论C语言中以null结尾的c字符串(字符数组)和相关函数(strcat等),如果它与它有任何关系.

c c++ arrays char

-2
推荐指数
1
解决办法
207
查看次数

标签 统计

c ×5

glibc ×2

string ×2

strlen ×2

arrays ×1

c++ ×1

char ×1

function ×1

performance ×1

strncpy ×1