一般来说,在设计软件时,您通常倾向于哪种类型的优化?
您是喜欢优化设计的人吗?
- 开发时间(即快速编写和/或易于维护)?
- 处理时间
- 存储空间(RAM,DB,光盘等)
当然,这很大程度上取决于要解决的问题的类型以及所涉及的期限,因此,我想听听导致您选择一种优化形式而不是另一种优化形式的原因。
一般来说,在设计软件时,您通常倾向于哪种类型的优化?
您是喜欢优化设计的人吗?
当然,这很大程度上取决于要解决的问题的类型以及所涉及的期限,因此,我想听听导致您选择一种优化形式而不是另一种优化形式的原因。
Answers:
然后根据需要进行分析并优化速度。我很少需要存储-至少在过去十年中没有。在那之前,我做了。
处理和存储很便宜。你的时间不对。
请注意:
这并不意味着仅仅为了快速完成代码就做不好的代码。这意味着以有助于快速开发的方式编写代码。它还完全取决于您的用例。如果这是一个简单的,两页或三页的带有联系表的网站,则可能不需要使用PHP框架。几个include和一个mailer脚本将加快开发速度。如果计划是要创建一个灵活的平台来进行扩展和添加新功能,则值得花些时间对其进行适当的布局并进行相应的编码,因为这将加速未来的开发。
与处理时间和存储的直接比较中,我倾向于更快的开发时间。使用collectionutils减去功能是减去集合的最快,最节省内存的方法吗?没有!但这是更快的开发时间。如果遇到性能或内存瓶颈,可以稍后解决。在您不知道需要优化的地方进行优化就是浪费您的时间,而这正是我所提倡的。
这是唯一对您的客户重要的价值。
开发时间不太重要。我可以编写一个功能齐全的命令行应用程序,其速度比GUI快得多,但是如果Jane夫人不知道如何使它吐出她想要的报告,那就没用了。
维护不太重要。我可以很快地修理跷跷板,但是如果它在森林中间,用户将找不到它。
处理时间不太重要。如果我在60秒内将光速设为0的汽车,用户将无法转向。
美学不太重要。我可以画蒙娜丽莎(Mona Lisa),但如果她隐藏在墙后,没人会看到她。
用户体验是唯一重要的价值。最终开发出一种能够以用户期望的方式完全满足用户期望的应用程序。
只有一件事需要优化,它是:
您的客户是否需要最快的程序?优化速度。
您的客户需要绝对的可靠性吗?为此进行优化。
他们需要明天交货还是会无用?优化开发速度。
运行在资源极其有限的微型设备上?针对这些资源进行优化。
我刚刚升级了去年使用的应用程序。他们已经完全重写了该应用程序,但孩子却很慢。我终于不得不购买一台新计算机来快速运行它。我向您保证这并不便宜,但是我的时间更有价值。
我倾向于倾向于限制内存消耗和分配。我知道这是一所旧学校,但是:
我会说我朝着效率进行了优化,效率被定义为开发时间,未来可维护性,用户体验和资源消耗之间的折衷。作为开发人员,您需要综合考虑所有这些因素以保持某种平衡。
您如何实现这种平衡?好吧,首先,您需要建立一些常数,例如截止日期是什么,应用程序将在哪种硬件上运行以及将使用哪种类型的人。在不知道这些的情况下,您将无法建立正确的平衡并确定需要平衡的优先级。
例如,如果您要在一台功能强大的计算机上开发服务器应用程序,则可能需要权衡性能效率以确保您无法按时完成任务。但是,如果您的开发人员需要快速响应用户输入(例如视频游戏)的应用程序,则需要确定输入例程的优先级,以确保输入例程不繁琐。
还记得那些将RAM超过512 MB的系统视为尖端技术的日子吗?我花了很多时间编写先前的代码。
我主要研究在Xen环境中在特权域上运行的低级程序。我们对特权域的上限是512 MB,剩下的RAM可供客户自由使用。对于我们来说,通常也将特权域限制为一个CPU内核。
所以我在这里,编写将在全新的$ 6k服务器上运行的代码,并且每个程序都必须(理想情况下)在100kb的分配上限内运行,或者完全避免动态内存分配。
简而言之,我针对以下方面进行了优化:
在等待锁,等待I / O或只是等待时,我也必须非常勤奋。我将大量时间用于改进现有的非阻塞套接字库,并研究更实用的无锁编程方法。
我每天都像在15年前那样,由于技术的进步,在上个月购买的系统上编写代码,这有点讽刺。
这对于任何在嵌入式平台上工作的人来说都是很典型的,尽管其中许多甚至至少拥有1GB的可用空间。正如Jason指出的那样,编写要在移动设备上运行的程序时也很典型。列表继续出现,信息亭,瘦客户机,相框等。
我开始认为,硬件限制确实使程序员与可以使某项工作无需关心实际消耗的人分开。我担心(如果需要的话,请否决我)哪种语言完全抽象了类型和内存,以检查(过去)在各个学科的程序员之间共享的常识集合。
高雅。
如果您的代码设计合理,它将产生多种效果:
开发时间,绝对。我还针对带宽进行了优化,但是我不打算使用二进制。
当今的计算机速度很快,但远远不够。在很多情况下,性能至关重要-如果您使用流媒体服务器。
您的客户可能有一个大磁盘,例如1Tb。可以用1000部高清电影来拍摄哪部电影,如果您想让它做得还远远不够,不是吗?
好吧,我不确定这是否算作“优化”,我要做的是我使用Java而不是C ++,并且开发速度提高了10倍。前进,完全摇摆!
顺便说一句,我相信要加快开发速度,您应该选择Java,切勿尝试使用python之类的废话……这声称它们可以缩短您的DEV时间。