测试-单线程与多线程效率差不多

问题描述

单线程与多线程效率差不多

场景:

    Server: springboot 开发的一个 web 项目

    client:使用 HttpClient 分别在单线程和多线程环境下测试某个模块的性能

问题:

   1.多线程和单线程效率基本没差别
     2.CPU使用率很低

解决方案

(1)过度同步或者锁定,导致真正应该并发的地方并没有并发
(2)CPU不是瓶颈,作为瓶颈的资源并不能在多线程下得到改善
(3)程序本身存在bug,甚至都没有正确执行

解决方案二:

cpu使用率很低,多半是你测试方法的问题,建议你先使用单线程测试,先想办法使得测试过程中cpu沾满,然后测试多线程。

解决方案三:

先使用单线程测试,这种情况应该是测试方法存在问题或者程序本身存在问题甚至是根本没有执行,从而使得该并发的地方没有并发,多线程资源没有得到充分的释放。

时间: 2024-10-05 09:06:27

测试-单线程与多线程效率差不多的相关文章

简单对比C#程序中的单线程与多线程设计_C#教程

多线程概念 1.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括多个线程.线程是操作系统分配处理器时间的基本单位 2.应用程序域是指进行错误隔离和安全隔离,在CLR中运行,每个程序域都是单个线程启动,但该程序域中的代码可以创建附加应用程序域和附加线程 3.多线程的优点在于一个线程阻塞的时候,CUP可以运行其他的线程而不需要等待,这样大大的提高了程序的执行效率.而缺点在于线程需要占用内存,线程越多占用的内存就多,多线程需要协调和管理,所以需要占用CPU时间以便跟踪线程,线程之间对共享

java单线程和多线程的区别

1.单线程和多线程的区别? 你早上上班,正要打卡的时候,手机响了..你如果先接了电话,等接完了,在打卡,就是单线程.如果你一手接电话,一手打卡.就是多线程.这两件事的结果是一样的..你接了电话且打了卡. (1)最常见的一个线程例子: package com.ggx.thread; public class OnlyThread{ public static void main(String[] args){ System.out.println("我就是一个线程"); } } 当程序启

请问:各位所在的公司有没有不设专门的测试岗位的、开发人员自已编写代码自已测试?开发人员感觉差不多了,就可以发布了?

问题描述 请问:各位所在的公司有没有不设专门的测试岗位的.开发人员自已编写代码自已测试?开发人员感觉差不多了,就可以发布了? 解决方案 解决方案二:当然有.没测试过的东西,谁有那个胆子发布?会出事的.公司有专门的测试岗位.程序员自己也要测试.解决方案三:很小的公司(<20人)的...一般没有专门测试岗位..解决方案四:自已顶起来解决方案五:有的几十个人的外企,一样没有专业测试团队.基本上就是给系统工程师黑盒跑跑看就可以发布了.毕竟这个公司的产品不是给平民大众用的.

测试Java的synchronize和ReentrantLock在单线程下的效率

ReentrantLock 在多线程情况下要远胜synchronize,这点没有疑问. 最近要写个程序,有个变量是有多数情况下是一个线程读写,有少数情况下是多个线程并发读写.所以要测试下ReentrantLock 在单线程下和synchronize的效率对比. 在测试的过程中发现一个有意思的现象. 测试代码见后面. 测试代码1结果: noLockTime: 0:00:00.004 noLockTime: 0:00:00.006 noLockTime: 0:00:00.000 syncTime:

.net中的多线程效率问题

问题描述 系统采用.net2005C#进行开发,程序中调用了arcgis中的控件进行进地图定位(仅得到定位数据,不涉及界面方面的更新或操作)地图定位在UI线程下面运行,可以达到200条/秒的处理速度.如果自己创建线程(Thread)进行地图定位,仅达到40条/秒的处理速度,把线程设为高优先级也没用环境说明,运行于core2的机上,内存有1G,操作系统windows2003,系统资源方面没有问题 解决方案 解决方案二:想问一下,出现这种情况,一般是什么问题,应该从哪方面下手来处理这个问题解决方案三

MySQL 5.6, 5.7并行复制测试(r12笔记第9天)

   对于主从延迟,其实一直以来就是一个颇有争议的话题,在MySQL阵营中,如果容忍一定的延迟的场景,通过主从来达到读写分离是个很不错的方案,但是延迟率到底有多高可以接受,新版本中的并行复制效果怎么样,在不同的版本中是否有改变,我们能否找到一些参考的数据来佐证,这一点上我们可以通过一些小测试来说明.    首先来为了基本按照同一个参考标准,我们就在同一台服务器上安装了5.6,5.7的MySQL服务,另外一台服务器上搭建了从库.    数据库版本为5.6.23 Percona分支, 5.7.17

5款App帮助检测你的带宽

互联网测速应用出现已经有段时间了.我们大多数人都或多或少地使用过SpeedTest.net.SpeakEasy.net/SpeedTest或者我们ISP的速度测试站点来检测我们的带宽.不过,这些应用大多采用Flash或者Java小程序来进行速度测试.在充满各种平台的现代世界中,只有一种解决方案能够统治所有:HTML5.HTML5在所有现代浏览器上都得到了支持:微软Internet Explorer.Google Chrome.Mozilla.Firefox和Apple Safari,等等--这意

测试Go语言的interface的效率

interface是Go语言中的一大特点,甚至说是灵魂也不为过. interface应该会在Go程序中大量出现和使用,因为有必要了解和测试下它的效率. 测试思路: 使用vector包,测试原生的IntVector和用interface包装后的vector的效率. Go1中去掉了vector包,不过当时我把vector的代码保留了一份, 在代码库里应该也能找到.我找到了一个版本的:https://code.google.com/p/go/source/browse?name=weekly.2011

java-如何判断一个系统是多线程系统,还是单线程系统

问题描述 如何判断一个系统是多线程系统,还是单线程系统 java开发中 如何判断一个系统是多线程系统,还是单线程系统 解决方案 多线程的同步,就是保证不会出现多个线程同时访问同一个数据的情况,如果有这种情况,就要加同步锁! 解决方案二: 单线程系统是多线程系统的特例. 即便你没有创建任何额外的线程,你调用的库,以及jvm本身也会创建额外的线程. 解决方案三: 但是你可以看你的计算机有几个处理器(内核),在任务管理器中可以看到.一个单处理器的系统,无论是单线程还是多线程,同时只能执行一个线程. 解