首页 新闻 搜索 专区 学院

多线程测试耗时

0
悬赏园豆:15 [已解决问题] 解决于 2017-08-11 13:39

情景:有100个线程来get请求一个网址,方法为:

using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri(url);
                    client.Timeout = new TimeSpan(0, 0, nTimeOut);
                    var watch = Stopwatch.StartNew();
                    var mess = await client.GetAsync(url);
                    watch.Stop();
                    time = watch.ElapsedMilliseconds;
                    return new Tuple<long, HttpResponseMessage>(time, mess);
                }

最后看了一下结果List<long>发现是递增的。然后我根据我的理解认为情况是这样子的:

线程A/B都启动了,然后A到了

var watch = Stopwatch.StartNew();这一行。这个时候CPU把资源给了B线程,相当于A线程挂起来了。
然后B线程执行到某一步B线程挂起来,CPU资源给了A,这时候A继续跑,跑完了
watch.Stop();然后计时。但是这个watch计算的时间不仅仅包括A本身的时间还有A挂起来的这段时间。

上述我的理解不知道对不对。有没有大神解释一下?


陌陌秋雨的主页 陌陌秋雨 | 初学一级 | 园豆:2
提问于:2017-07-31 14:20
< >
分享
最佳答案
0

你想的太复杂了。

简单的说,计时就是从Watch开始,到Watch结束的流逝时间。不管有没有多线程。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30753 | 2017-07-31 14:31

那就是说我用Stopwatch计时是受线程数量影响了?

陌陌秋雨 | 园豆:2 (初学一级) | 2017-07-31 15:35
其他回答(4)
0

  var watch = new Stopwatch();
                    watch.Start();

。。。。。。。。。。。。。。。。。

 watch.Stop();

收获园豆:5
笔池 | 园豆:55 (初学一级) | 2017-07-31 14:55
0

http://www.cnblogs.com/xima/p/7211592.html

收获园豆:5
西码 | 园豆:194 (初学一级) | 2017-07-31 15:31
0

你理解对着呢,时间片基本就是这样的。

空明流光 | 园豆:69 (初学一级) | 2017-07-31 16:18

https://baike.baidu.com/item/%E6%97%B6%E9%97%B4%E7%89%87%E8%BD%AE%E8%BD%AC%E8%B0%83%E5%BA%A6/3059054?fr=aladdin

支持(0) 反对(0) 空明流光 | 园豆:69 (初学一级) | 2017-07-31 16:19
0

等待该GetAsync(url);执行所花的时间。

花飘水流兮 | 园豆:12547 (专家六级) | 2017-07-31 22:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册