当我在不同的网站上读到可伸缩性的定义时。我从CPU和软件的角度了解到,这意味着随着CPU数量的增加,软件的性能也会提高。
然而,在“并行编程入门”一书中对可伸缩性的描述是不同的,它是这样的:
“假设我们用固定的进程/线程数和固定的输入大小运行一个并行程序,我们得到了一个效率E。假设我们现在增加了程序使用的进程/线程的数量。如果我们能在问题大小中找到相应的增长率,使程序始终具有效率E,那么这个程序是可伸缩的。我的问题是,可伸缩性的正确定义是什么?如果我正在对并行软件的可伸缩性进行测试,我应该考虑这两个定义中的哪一个?
发布于 2015-08-05 14:47:15
Scalability是指应用程序在被大量客户端使用时能够正确运行并保持可接受的用户体验的能力。
最好,这种能力应该通过代码中的优雅解决方案来实现,但在不可能的情况下,应用程序的设计必须允许使用硬件进行水平增长(添加更多计算机,而不是增加一台计算机的性能)。
可伸缩性是随着业务的规模而增长的问题。Facebook (video)和Dropbox (video)就是很好的例子。此外,这里是哈佛会议上各种可伸缩性方法的great explanation。
Scalability还指的是user interface在保持用户体验的同时适应的各种屏幕尺寸的能力。
https://stackoverflow.com/questions/25768640
复制相似问题