为啥我的机器运行速度超级慢?正常情况下都有那些进程启动项视该保留的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的机器运行速度超级慢?正常情况下都有那些进程启动项视该保留的?相关的知识,希望对你有一定的参考价值。
请教高手。机器的运行速度是受那些启动项的影响?正常情况下的运行程序里都该有什么内容??本人是菜鸟,还请高手指点
1.我的电脑(右键)-属性-服务2.我的电脑-控制面板-服务
A、Application Management(应用程序管理):应用程序管理,管理软件的安装与卸载,经测试,禁用没有关系。
B、ClipBook(剪贴簿):网络中的复制的内容,是否保存在本机的剪贴簿,禁用。
C、Computer Browser(计算机浏览器):更新网络邻居中的机器列表,我们不用共享服务,禁用。
D、DHCP Client(动态主机配置协议客户端): 动态IP分配服务客户端,开机是否搜索网络中的DHCP服务器,我们使用的是静态IP地址,不需要此服务,禁用。
E、Distributed Link Tracking Client(分布式连接跟踪客户端):跟踪NTFS格式文件在局域网中的移动,如果不在局域网中复制文件,可设置为禁用。
F、DNS Client(域名系统客户端):虽然是域名解析客户端,但禁用后,没有影响。
G、Fax Service(传真服务):系统自带的传真服务,不需要,禁用。
H、Indexing Service(索引服务):为磁盘中的文件建立索引服务,我们用不到。禁用。
I、Internet Connection Sharing(Internet连接共享):Internet共享服务,也就是代理服务,客户机不需要,禁用。
J、IPSEC Policy Agent(IP安全策略代理):IP安全策略设置管理服务,禁用。
K、Messenger(信使服务):信使服务,如不禁止,经常会收到广告信息和一些网络广告,影响正在进行的操作,强烈要求禁用。
L、Net Logon(网络登陆):我们没有使用域管理模式,可禁用。
M、NetMeeting Remote Desktop Sharing(NetMeeting远程桌面共享):远程管理桌面共享,用不到,禁用。
N、Network DDE(网络动态数据交换)和Network DDE DSDM:全部禁用。
O、Print Spooler(打印后台处理):没有打印机,不需要,禁用。
P、Remote Registry Service(远程注册表服务):远程修改注册表,为了安全,禁用。
Q、Run As Service(以其他用户身份运行服务的服务):不用多说,禁用。
R、Smart Card和Smart Card Helper:这两个服务提供对智能卡设备的支持,将其设为“已禁用”。
S、Task Scheduler(计划任务):自动运行的计划任务,不需要,禁用。
T、TCP/IP NetBios Helper Service(TCP/IP NetBIOS支持服务):为了提高网络访问速度,禁用。
U、Telephony(电话):简单地说这个服务能为计算机提供电话拨号的能力。用不到,设置为禁用。
V、Uninterruptible Power Supply(不间断电源):管理连接到计算机的不间断电源(UPS)的服务。我没有UPS,禁用。
Linux各项系统开机服务有哪些可以关掉?
站点:爱心种子小博士 关键字:Linux各项系统开机服务有哪些可以关掉
Linux各项系统开机服务有哪些可以关掉?
Linux在启动时要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。但是,开启不必要或有漏洞的服务则会给操作系统带来安全和性能上的影响。下面我们以BluePoint Linux 2.0的开机服务为例,列表说明各项服务的功能(见附表)。
alsasound
Alsa声卡驱动程序支持。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。
amd
运行automount精灵程序,该精灵在必要时自动安装一些 本地设备和NFS文件系统。
apmd
apmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。
arpwatch
该程序主要用来维护以太网物理地址和IP地址的对应关系。
atalk
AppleTalk精灵程序。注意不要在后台运行该程序,该程 序的数据结构必须在运行其他进程前先花一定时间初始化。
atd
运行用户用At命令调度的任务。也在系统负荷比较低时 运行批处理任务。
autofs
当您需要时自动转载文件系统,而当您不需要时自动卸载。
bootparamd
该服务允许老的Sun工作站从Linux网络启动,它和rarp 现在很少使用,基本上被bootp和dhcp取代了。
crond
cron是Unix下的一个传统程序,该程序周期地运行用户 调度的任务。比起传统的Unix版本,Vixie版本添加了不 少属性,而且更安全,配置更简单。
dhcpd 该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。
gated
gated通过一个数据库提供了网络路由功能支持。它支持 各种路由协议,包括RIP版本1和2、DCN HELLO协议、 OSPF版本2以及EGP版本2到4。
gpm
gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标 的拷贝,粘贴操作以及弹出式菜单。
httpd
http是著名的www服务器,可用来提供html文件以 及CGI动态内容服务。
inetd
因特网操作服务程序。监控网络对各种它管理的服务的需 求,并在必要的时候启动相应的服务程序。通常,inetd 管理的程序有telnet、ftp、rsh和rlogin。关闭inetd也就 关闭了这些由它管理的服务。
innd
inn是最流行的用户组新闻服务器。它允许您建立起本地 新闻服务器。配置有一定的难度,可以先阅读/usr/doc/ inn*文档获得帮助。
keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说 明的键盘映射表,该表可以通过kbdconfig工具进行选 择。您应该使该程序处于激活状态。
ldap
LDAP代表Lightweight Directory Access Protocol, 实现了目录访问协议的行业标准。
linuxconf
linuxconf是Linux下的一个有效的系统配置工具,该服 务允许远程运行。
lpd
lpd是系统打印守护程序,负责将lpr等程序提交给打印 作业。
mcserv
Midnight Commander服务进程允许远程机器上的用户 通过Midnight Commander文件管理器操作本机文件。服 务进程用PAM来验证用户,需要给出用户名/口令 以通过验证。
mysql 一个快速高效可靠的轻型SQL数据库引擎。
named 域名服务器,将Internet主机名解析为点分的IP地址。
netfs 负责装载/卸载NFS、Samba、NCP(Netware)文件系统。
network 激活/关闭启动时的各个网络接口。
nfs
NFS是一个流行的基于TCP/IP网络的文件共享协议。该 服务提供了NFS文件共享服务,具体的配置在/etc/ exports文件里。
nscd
该服务负责密码和组的查询,并且缓冲查询结果。如果您 的系统有比较慢的服务(如NIS和NIS+),则应该启动该 服务。
pcmcia pcmcia主要用于支持笔记本电脑。
portmap portmap用来支持RPC连接,RPC被用于NFS以及NIS 等服务。
postgresql PostgreSQL关系数据库引擎。
proftpd proftpd是Unix下的一个配置灵活的ftp守护程序。
radvd 路由广播程序。
random
保存和恢复系统的高质量随机数生成器,这些随机数是系 统一些随机行为提供的。
routed
该守护程序支持RIP协议的自动IP路由表维护。RIP主要 使用在小型网络上,大一点的网络就需要复杂一点的协议。
rstatd Rstat协议允许网络上的用户获得同一网络上各机器的性能 参数。
rusersd 该服务使网络用户可以定位同一网络上的其他用户。
rwalld
Rwall协议允许远程用户向在同一系统中活跃着的终端发送 消息,类似wall的本地行为。
rwhod
允许远程用户获得运行rwho精灵的机器上所有已登录用户 的列表,与finger类似。
sendmail 大名鼎鼎的邮件服务器。
smb 启动和关闭smbd和nmbd精灵程序以提供SMB网络服务。
snmpd 简单网络管理协议(SNMP)的守护精灵。
syslog
syslog是操作系统提供的一种机制,守护程序通常使用这 种机制将各种信息写到各个系统日志文件。通常应该启动 该服务。
xfs X的字体服务器。
ypbind NIS/YP的客户端守护程序。如果您需要使用NIS/YP机 器,请启动这项服务,否则,关闭这项服务。
yppasswd
让NIS用户能够修改密码。运行在NIS域的服务器上。客 户端程序同样也叫yppasswd。
ypserv
标准NIS/YP网络协议的一个实现。允许主机名,用户名 和其他信息分布于网络各端。运行在NIS服务器上,客户 端不需要。 参考技术A 启动过后,就不应该影响速度了,如果正常工作后还是慢,你就开任务管理器看看,是谁占了那么多内存,如果没找到,很可能是哪个硬件出问题了,到网上下个功能更强点的任务管理器,名字我忘了,反正连硬件中断占的内存资源都能查出来.
对为啥我的算法运行速度比它应该的慢感到困惑
【中文标题】对为啥我的算法运行速度比它应该的慢感到困惑【英文标题】:Confused as to why my algorithm is running slower than it should be对为什么我的算法运行速度比它应该的慢感到困惑 【发布时间】:2014-05-05 03:08:42 【问题描述】:纯粹是为了好玩,我决定编写一个简单的算法来查找 2 和 x 之间的所有素数,其中 x 是你想要的任何值。我正在使用clock_t
来计算算法完成不同 x 值所需的时间。 (我去 x=0,然后是 25000,然后是 50000,然后是 75000,...,直到 1,000,000)。例如,当 x = 25000 时,我进入一个 for 循环,其中 i
从 2 变为 25000,并且对于 i
的每个值,我通过将其除以 2 和自身之间的每个数字来检查它是否是素数, 寻找余数 0。
算法如下:
vector<int> calcPrimesWithoutPrechecking(int upperLimit)
vector<int> res;
for(int i = 2; i <= upperLimit; i++)
int currentNum = i;
bool foundDivisible = false;
for(int j = 2; j < currentNum; j++)
if(currentNum % j == 0)
foundDivisible = true;
break;
if(!foundDivisible)
res.push_back(i);
return res;
我想我可以通过检查我们当前正在测试的数字的最后一位来加快速度。如果那个数字是 0、2、4、5、6 或 8,那么我什至不必检查它是否是素数,因为我知道它不是(当然 2、3 和 5 是,所以这些都被处理了在一开始的时候)。我称之为预检查。这是带有预检查的算法:
vector<int> calcPrimesWithPrechecking(int upperLimit)
vector<int> res;
res.push_back(2);res.push_back(3);res.push_back(5);
for(int i = 6; i <= upperLimit; i++)
bool foundDivisible = false;
int lastDig = i%10;
if(lastDig == 0
|| lastDig == 2
|| lastDig == 4
|| lastDig == 6
|| lastDig == 8
|| lastDig == 5)
foundDivisible = true;
int currentNum = i;
for(int j = 2; j < currentNum && !foundDivisible; j++)
if(currentNum % j == 0)
foundDivisible = true;
break;
if(!foundDivisible)
res.push_back(i);
return res;
我将结果输出到控制台,并将它们写入文本文件。然后我将时间复制到excel,并绘制它们。但是,由于某种原因,带有预检查的算法较慢。我几乎可以肯定它会更快。当我运行程序时,我会故意关闭计算机上的每个程序,并以发布模式运行它。我已经在调试中测试了每个算法,它们确实都按预期工作。
Here is my data.
x 轴是我们要检查的素数的数量(例如,25000 表示我们正在寻找 2 到 25000 之间的所有素数),y 轴是获得所有素数的时间(以秒为单位)。
有人可以解释为什么理论上应该消除许多计算的第二种算法实际上更慢吗?
【问题讨论】:
只遍历奇数会更容易,并且会稍微提高效率。将外循环更改为for(int i = 7; i <= upperLimit; i += 2)
。
最佳的试除法是~ n^1.35..1.45
和Eratosthenes的筛子~ n~1.05..1.1
,在n
产生的素数。您的算法是~ n^2 ~ x^2/(log x)^2
,实际上您的数据在 100 万与 400K empirically 是 ~ x^1.92
。
【参考方案1】:
带有预检查的实现有点慢的原因是它需要做更多的工作来消除许多在内循环的第一步之后无论如何都会被消除的数字。
以数字8
为例:预检查需要找到一个除法余数并进行五次比较才能消除它,而没有预检查的程序也消除了8
,但只有一次除以二并与零进行比较。
5
是您可能会看到的唯一数字,但这些数字不像偶数那样常见,您的程序会在偶数上丢失 CPU 周期。
加快这一速度的更好方法是完全避免偶数:回想一下all prime numbers after 3
are either of the form 6*k+1
or 6*k-1
。现在您可以将迭代速度提高近三倍!
另一件事是,您不需要检查候选素数平方根之后的除数(您能证明为什么会这样吗?)仅此更改就会给您带来巨大的改进。
最后,一个非常有用的技巧是存储您迄今为止发现的所有素数,并将它们用作您的试除数。这将大大提高你的内循环的速度。
【讨论】:
我正在尝试实现这一点,但它似乎认为某些数字是素数,而不是真正的素数。我为 i 的每个值检查 q = i/6 和 r = i%6,如果 r 是 0、2、3 或 4,我知道它不是素数,否则(如果是 1 或 5)它是主要。它主要是素数,但有一些非素数正在滑入(25、35、55、77,...) 循环应该是这样的:for (int i = 1 ; 6*i < upperLimit ; i++) int cand1 = 6*i-1; int cand2 = 6*i+1; ...
然后使用内部for
循环测试两个候选者。
很抱歉,我没有完全关注... 我应该如何测试候选人?你所说的是我认为是结果的“候选人”。我不确定我应该对候选人进行什么测试。您发布的链接使 6(q+1)-1 和 6q+1 步骤看起来像是测试的最后一部分,而不是第一部分。
@xcdemon05 在您的代码中,i
是候选素数。您在外循环的每次迭代中测试一个候选素数。在我的循环中,6*i-1
和 6*i+1
是候选素数。您需要测试它们是否为素数,并将通过测试的素数添加到素数列表中。
@xcdemon05 试试for(int j = 0; ; j++) int p=res[j]; if( p > c1/p ) res.push_back(c1); break; if( c1 % p == 0 ) break;
.【参考方案2】:
因为它不会进行许多计算。如果一个数字是偶数,将在检查它是否能被 2 整除(这是您在循环中检查的第一个数字)时立即发现。这比你在这里做的要快得多:
int lastDig = i%10;
if(lastDig == 0
|| lastDig == 2
|| lastDig == 4
|| lastDig == 6
|| lastDig == 8
|| lastDig == 5)
【讨论】:
另外,如果成功,它不会跳过另一个 for 循环。 @LachlanEaston:确实如此。检查第二个版本的内循环的循环条件。 哇。这很有意义。我不敢相信这没有发生在我身上!以上是关于为啥我的机器运行速度超级慢?正常情况下都有那些进程启动项视该保留的?的主要内容,如果未能解决你的问题,请参考以下文章
vb 的webBrowser控件为啥有时候打开网页速度奇慢?用IE却正常.