- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试评估不同的子字符串搜索 (ala strstr) 算法和实现,并寻找一些精心设计的 needle and haystack 字符串,它们将捕获最坏情况下的性能和可能的极端情况错误。我想我可以自己解决它们,但我认为有人必须在某个地方收集大量测试用例......
最佳答案
一些想法和对自己的部分回答:
暴力算法的最坏情况:
a^(n+1) b
在 (a^n b)^m
例如aaab
在 aabaabaabaabaabaab
SMOA 的最坏情况:
类似于 (yxyxyxxyxyxyxy)^n
中的 yxyxyxxyxyxyxx
。需要进一步细化。我试图确保每个进步只是部分匹配长度的一半,并且最大后缀计算需要最大量的回溯。我很确定我在正确的轨道上,因为这种情况是迄今为止我发现的唯一使我的 SMOA 实现(渐近 6n+5
)运行速度变慢的方法比 glibc 的 Two-Way(渐近 2n-m
但具有适度痛苦的预处理开销)。
任何基于滚动哈希的最坏情况:
无论字节序列是什么,都会导致哈希值与针的哈希值发生冲突。对于任何相当快的散列和给定的针,应该很容易构造一个大海捞针,其散列在每个点都与针的散列发生冲突。然而,似乎很难同时创建长部分匹配,这是获得最坏情况行为的唯一方法。自然地,对于最坏情况下的行为,指针必须具有一定的周期性,以及一种通过仅调整最终字符来模拟散列的方法。
双向的最坏情况:
似乎是具有非平凡 MS 分解的非常短的针 - 类似于 bac
- 干草堆在针的右半部分包含重复的误报 - 类似于 dacdacdacdacdacdacdac
。该算法可能变慢的唯一方法(除了 glibc 作者实现不佳......)是使外部循环迭代多次并反复产生该开销(并使设置开销显着)。
其他算法:
我真的只对空间O(1)
且预处理开销低的算法感兴趣,所以我没有过多研究它们的最坏情况。至少 Boyer-Moore(没有修改使其 O(n)
)有一个不平凡的最坏情况,它变为 O(nm)
。
关于c - 什么是基准测试和压力测试子字符串搜索算法的好测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134602/
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我在 tomcat 服务器上部署了一个 Web 应用程序。我通过 POST 方法上传文件,然后上传文件被转码为另一种类型(例如 3gp 到 flv)。我如何测试,有多少并发上传和转码我的 Web 应用
我想知道是否有任何方法可以获取单击时的压力级别(用户单击鼠标键/按钮时产生的压力)。有资源或链接吗? 抱歉我的英语不好,希望我的问题很清楚,希望不仅仅是乌托邦! 最佳答案 我意识到我正在用一些当时不相
我写信是为了问一个关于 WCF 性能的问题。 1。背景 我们有一个在 .NET 3.5 上运行的客户端-服务器系统。服务器是 C# 服务,客户端是 silverlight 应用。 我写了一个压力测
我想编写一份包含 NMS 排序的报告。我想在报告中包含代码,但不包含运行压力。 我试过 message=FALSE, warning=FALSE, results='hide' 但它仍然包含在报告中。
我今天第一次尝试使用 cassandra-stress 工具。尽管我能够运行该工具,但输出中会显示很多“无法通过 JMX 连接;未收集这些统计信息”消息 命令 cassandra-stress use
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我希望通过一遍又一遍地不断访问网址列表来模拟网络服务器上的重负载! 最初,我计划使用 wget/curl 编写一个简单的脚本,但由于该站点使用大量 ajax 请求来完成大部分繁重的工作,因此这不是一个
我最近创建了一个回合制游戏服务器,可以接受数以万计的同时客户端连接(长话短说 - Linux 上的 epoll)。通信基于简单、自定义、基于线路的协议(protocol)。该服务器允许客户端连接、寻找
Stress-ng:我们可以使用stress-ng测试RAM吗?用于在 MIPS 32 设备上测试 RAM 的命令是什么? 最佳答案 在stress-ng中有许多基于内存的压力源: stress-ng
我正在 iPhone 上测试我的简单 OpenGL ES 实现(2D 游戏),并且在使用分析器时我注意到渲染利用率很高。这些是事实: 我以 60 fps 的速度仅显示一个预加载的大型纹理(512x51
我正在 canvas 上编写应该支持平板电脑和触摸压力的网络应用程序。不过,如果我没记错的话,我相信只有IE10支持这些指针事件。我想知道 chrome 和 firefox 是否会很快支持它? 最佳答
Stress-ng:如何使用 execv 在 C 或 Cpp 中编写应用程序来调用 stress-ng 命令以在 MIPS 中进行 CPU 和内存测试,并在成功或失败时返回其状态?给定一个可执行的 s
我是一名优秀的程序员,十分优秀!