“昂贵”在软件运营方面意味着什么?

时间:2012-03-27 11:04:16

标签: java resources

操作的含义是昂贵的,或者资源在软件方面是昂贵的。当我遇到一些文档时,他们提到了像每次打开文件这样的事情是一个昂贵的操作。我可以有更多这样的例子(数据库连接是一个昂贵的操作,线程池是更便宜的,等等。)。在什么基础上,它决定任务或操作是昂贵还是更便宜?当我们计算这个约束时要考虑什么?是基于时间吗?

注意:我已经在网上查了一下,但我没有得到任何好的解释。如果你发现与我分享,我可以关闭它..

5 个答案:

答案 0 :(得分:5)

昂贵 昂贵的 操作是导致大量资源被使用的操作,例如CPU,磁盘驱动器或内存

例如,在代码中创建整数变量不是一项昂贵或昂贵的操作

相比之下,创建与托管关系数据库的远程服务器的连接,查询多个表并在迭代它之前返回大的结果集,同时保持连接到数据源(相对而言) )昂贵或昂贵,而不是我的第一个整数示例。

为了构建可扩展,快速的应用程序,您通常希望最大限度地降低执行这些代价高昂/昂贵的操作的频率,应用优化,缓存,并行(等)技术,这些技术对软件的运行至关重要。 / p>

为了获得一定程度的准确性和一些实际数字,您可以使用某种分析或分析工具,这些数字在您的应用程序中“昂贵”和“便宜”。对于JavaScript,有ySlow - 对于.NET应用程序,dotTrace - 我确信无论平台如何,都存在类似的解决方案。然后由某人来理解输出,这可能是最重要的部分!

答案 1 :(得分:1)

运行时间,内存使用或带宽消耗是“成本”的最典型解释。还要考虑它可能适用于开发时间的成本。

答案 2 :(得分:1)

我会尝试通过一些例子来解释:

如果你需要在数据库的每一行中编辑两个字段,如果你这样做,一次一个字段将接近两倍的时间,就像它同时正确完成一样。 / p>

这个额外的时间不仅浪费你的时间,而且打开的连接时间更长,所需的内存占用时间更长,而且在一天结束时,你的效率会下降。

当你开始萎缩时,浪费的时间非常少,这会浪费公司资源。

答案 3 :(得分:0)

几乎可以肯定地说,执行这种输入/输出会产生时间损失。大量内存改组(复制从具有大量成员的类创建的对象)是另一个浪费时间(通过引用传递有助于消除大量此类内容)。

答案 4 :(得分:0)

通常代价高昂,意味着以非常简单的方式对内存进行操作所需的时间要长得多。

例如,访问文件系统中的文件并读取每一行需要更长的时间,然后只需迭代内存中相同大小的列表。 关于数据库操作也可以这么说,它们比内存操作需要更长的时间,因此应该谨慎使用,不要滥用这些操作。

我再说一遍,非常简单化的解释。具体的代价取决于您的特定环境,您正在执行的操作数量以及系统的整体架构。