小九博客

  • 首页
  • 编程开发
  • 信息安全
  • 工具资源
  • 随笔
  • 在线工具
    • 在线图片水印
    • Json解析
    • JavaRuntimeExec
    • 加解密/编码工具集
  • 关于
小九博客
Hack The World!
  1. 首页
  2. 编程开发
  3. 正文

【算法】变量交换

2018年01月24日

我们常见的两变量交换会采用第三个变量。
本文记录几个不使用临时变量交换方法。

  • list 简洁 不改变变量类型适用所有变量类型

    1
    2
    3
    4
    5
    6
    <?php
    $a = "你好";
    $b = "世界";
      echo $a.$b;//输出 “你好世界”
      list($b,$a) = [$a,$b];
      echo $a.$b;//输出 “世界你好”
  • ^异或 适用于等长文本和int类型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $a = 98;
    $b = 12;
    var_dump($a);//int(98)
    var_dump($b);//int(12)
    $a = $a^$b;
    $b = $b^$a;
    $a = $a^$b;
    var_dump($a);//int(12)
    var_dump($b);//int(98)

    经过测试list方法和异或方法执行时间毫秒级暂时看不出区别。

但是内存方面list方法会比异或方法占用要多一点。
事实上,
List的方法虽然简洁,但是内存开销比新建一个中间变量还要大。。

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$a = 9899999;
$b = 4546464;
var_dump($a);
var_dump($b);
$t1 = microtime(true);
$a = $a^$b;
$b = $b^$a;
$a = $a^$b;
$t2 = microtime(true);
echo '耗时'.($t2-$t1).'微秒<br>';
echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />';
var_dump($a);
var_dump($b);
/*
int(9899999) int(4546464) 耗时1.9073486328125E-6微秒
Now memory_get_usage: 352232
int(4546464) int(9899999)
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$a = 9899999;
$b = 4546464;
var_dump($a);
var_dump($b);
$t1 = microtime(true);
list($b,$a) = [$a,$b];
$t2 = microtime(true);
echo '耗时'.($t2-$t1).'微秒<br>';
echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />';
var_dump($a);
var_dump($b);
/*
int(9899999) int(4546464) 耗时1.9073486328125E-6微秒
Now memory_get_usage: 352312
int(4546464) int(9899999)
*/
标签 PHP 算法
最后更新:2018年01月24日

文章评论

小九

Just For Fun

文章大纲
分类目录
  • 编程开发
  • Yii2
  • 随笔
  • 工具资源
  • Django
  • 信息安全
标签聚合
Docker漏洞 mysql+es cloudflare DNSRebind php组件 PHPUnit
随机 最新 热点
随机 最新 热点
PHP-Xdebug MySQL数据同步到ElasticSearch(Logstash方案)爬坑纪实 PHP反射机制 Yii2 资源大全 【[转]PHP资源大全】Awesome PHP 项目 DNSRebind攻击
OpenSearch集群部署 DNSRebind攻击 MySQL数据同步到ElasticSearch(Logstash方案)爬坑纪实 自动化编排学习(一)部署篇 常见容器漏洞总结 免费CDN加速手把手教程

COPYRIGHT © 2021 小九博客 ALL RIGHTS RESERVED.