- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用自定义 indexOf 函数编写了一个小程序,但想放弃它以支持系统 string.IndexOf() 方法。
但在我开始重构之前,我出于好奇写了一个小测试程序,看看我的函数与系统 string.IndexOf() 相比表现有多糟糕
我观察到的事实是系统 string.IndexOf 似乎比迭代数组慢了一个数量级。
Processing random random string at 1000000 characters.
Processing method 1 system string.IndexOf
index 999999 took 620036 ticks
Processing method 2 custom IndexOf
index 999999 took 130007 ticks
所以我的问题是真的; 我做错了吗? 系统运行速度不应该比我用 c# 编写的任何其他东西快得多吗?
长话短说测试场景
首先我设置了一些测试数据,用一些数据填充了一个随机字符串
StringBuilder sb = new StringBuilder();
Random r = new Random();
string c = "abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789";
long before;
long after;
for (int i = 0; i < 1000000; i ++) sb.Append(c[r.Next(c.Length)]);
然后在我想搜索的数组末尾插入一些东西,最坏的情况
int j = sb.Length - 1 ;
sb[j] = '"';
方法一:系统string.IndexOf
然后检查系统 string.IndexOf() 使用了多少个刻度
before = DateTime.Now.Ticks;
index = text.IndexOf("\"");
after = DateTime.Now.Ticks;
方法二:自定义方法
然后我运行我的自定义代码,它只是一个静态函数,带有一个 while 循环迭代一个字符数组。
before = DateTime.Now.Ticks;
index = IndexOf(text, 0, '"', '/');
after = DateTime.Now.Ticks;
最佳答案
String.IndexOf
也有一个接受 char
作为参数的重载。试试这个。您自己的实现显然使用了 char
而不是 string
。
index = text.IndexOf('"');
您应该重复测试几次。有时第一次运行需要更长的时间,因为方法是 jitted 或因为静态成员被初始化或类似的事情。
Test1();
Test2();
// start time
for (i = 0; i < 100; i++) {
Test1();
Test2();
}
// stop time
关于c# - indexOf() 的性能与函数循环做同样的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8885864/
那就是我的第一个使用MVVM的项目,MVVM light。 我有一个列表框,该列表框从PersonList Observable集合中刷新,正常添加和删除刷新。问题是编辑项目时。 我寻找了解决该问题的
这个问题在这里已经有了答案: How do I return the response from an asynchronous call? (41 个回答) 关闭10 年前。 我有这个代码 var
我有一个很大的配置文件(用户),我需要将其转到正确的位置并设置一些默认值。 因为我有一个安装程序类,所以我在其中的配置文件中添加了一些参数设置,但在安装程序文件夹中创建了配置文件。 确保这些默认参数只
|AA|多对多|BB|多对多 |CC| 与连接表映射成为 |AA|--|AA_BB|--|BB|--|BB_CC|--|CC| (抱歉,我无法发布图片,声誉低) 编辑:简短的问题是为什么如果a创建Aa
我想创建这个例子 GET /my_store/products/_search { "query" : { "filtered" : { "query"
AWS 为我们提供了 Athena 来运行无服务器 Hive 查询,Azure 是否有任何服务可以让我们运行无服务器 Hive 查询。 最佳答案 @ clown 。我相信您正在寻找的 Hive 的 A
这让我抓狂......这很好用: jQuery(document).ready(function(){ setTimeout(function(){ jQuer
我是一名优秀的程序员,十分优秀!