java 时间和空间转换的说法

首先理解什么是时间和空间,对于程序(java、c++、python等语言)代码而言:

在编程当中,存在某个程序,既需要运行速度快(用户体验好),又需要占用很少内存(成本少)。对于这两个需求没有完全绝对的说法,因为它们存在着对立面。就好比建筑工程上,让你干细活,还要让你在规定时间内完成。画家制作艺术品,让画家在一天时间内完成一副他这辈子最好的作品,一样道理;印证了生活里面的一句话:巧妇难为无米之炊;

只能在所控制范围内尽量完成;

这里用一段java中经常用到的数组排序为例:int[] a = {3,1,2,5,4};

一:时间转空间(利用足够长的时间节约内存的消耗量,即:可接受范围内的时间换取内存上面的占用量)
        for (int i = 0; i < a.length-1; i++) {
            for (int j = i+1; j < a.length; j++) {
                if(a[i]>a[j]) {
                    a[i] = a[i]+a[j];
                    a[j] = a[i]-a[j];
                    a[i] = a[i]-a[j];

                }
            }
        }

二:空间转时间(利用足够大的内存节省出最短的时间,即:不惜成本让程序在时间上的绝对要求)

for (int i = 0; i < a.length-1; i++) {
            for (int j = i+1; j < a.length; j++) {
                if(a[i]>a[j]) {
                    int b = a[i];
                    a[i]=a[j];
                    a[j] = b;

                }
            }
        }

上述两个例子当中数组容量很小,对于这两段代码的运行,看不出什么明显差异,只是举例说明一下。但平常我们的开发当中就得注意:一般项目中,分页是时间转空间,缓存是空间转时间;

(一)中标红色部分,是利用运算让两个变量的值交换,运算是需要时间成本的,但是减少了变量(即:内存开辟空间);

(二)中标红色部分,是利用重新声明变量 int b,让两个变量的值交换,声明变量是需要消耗内存空间的,但减少了时间成本(即:程序运行时间);

以上只属于个人对于内存及时间在程序上面的一些看法,如有建议请下方留言,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱墩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值