2012-03-27 21 views
0

操作意味着什么代价高昂,或者该资源在软件方面成本高昂。当我遇到一些文件时,他们提到了像每次打开文件都是昂贵的操作。我可以有更多这样的例子(数据库连接是一个代价高昂的操作,线程池是一个更便宜的,等等。)。在什么基础上决定该任务或操作是否昂贵或更便宜?当我们计算这个约束时要考虑什么?也是基于时间吗?在软件操作方面,“代价高昂”意味着什么?

说明:我已经在网上查了这个,但是我没有得到任何好的解释。如果你发现和我分享,我可以关闭它..

回答

5

昂贵昂贵操作是那些使大量的资源被使用,如CPU,磁盘驱动器(多个)或记忆

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

相反,创建一个到承载关系数据库的远程服务器的连接,查询几个表并返回在迭代之前保留一个大的结果集,同时保持连接到数据源将是(相对)昂贵或昂贵的,与我使用Integer的第一个示例相反。

为了构建可扩展的快速应用程序,您通常希望将执行这些代价高昂的操作的频率降至最低,并将优化,缓存,并行等技术应用于软件操作的基本位置。

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

0

它几乎可以肯定地谈论执行这种输入/输出的时间处罚。大量的内存洗牌(复制从具有许多成员的类创建的对象)是另一次浪费(通过引用有助于消除很多这种情况)。

1

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

0

通常,昂贵的手段,以非常简单的方式,它会花费比存储器上的操作更长的时间。

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

这是,我重复一个简单的解释。究竟是什么昂贵的手段取决于你的特定环境,你正在执行的操作的数量,以及系统的整体架构。

1

我会尝试通过一些实例讲解:

如果你需要一个数据库的每一行中编辑两个领域,如果你在一个时间会是接近两倍的时间做一个字段,如果这是正确的同时做两个。

这个额外的时间,不仅是你的时间浪费,同时也拉开不再那么需要一个连接不再那么,需要占用内存,并在一天结束时,你eficience去付诸东流。

当您启动scalling,浪费时间极少量的成长为公司资源很大的浪费。