几种交换方式与参数传递方式效率的比较,发现STL最慢

本文通过实验对比了不同参数传递方式及变量交换方法在C++中的效率表现,包括引用传递与位运算交换等,结果显示指针传递效率最高,而STL标准库实现则相对较慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*Copyright (c) 2007,九天雁翎

* All rights reserved.

* 几种交换方式与参数传递方式效率的比较

* 完成日期:2007年7月7日*/

#include "stdafx.h"

#include "myself.h"

#include <iostream>

#include <utility>

using namespace std;

const int RUNTIME = 1e5;

void swap1(int &v1, int &v2);

void swap2(int &v1, int &v2);

void swap3(int *p1, int *p2);

int main()

{

int v1 = 10000;

int v2 = 20000;

double t1 = myself::getTime();

for (int i = 0; i < RUNTIME; ++i)

{

swap1(v1,v2);

}

double t2 = myself::getTime() - t1;

cout <<v1 <<'/t' <<v2 <<endl;

cout <<"Reference pass parameter and bit^ way used time: "<<t2 <<endl;

t1 = myself::getTime();

for (int i = 0; i < RUNTIME; ++i)

{

swap2(v1,v2);

}

t2 = myself::getTime() - t1;

cout <<v1 <<'/t' <<v2 <<endl;

cout <<"Reference pass parameter way used time: "<<t2 <<endl;

t1 = myself::getTime();

for (int i = 0; i < RUNTIME; ++i)

{

swap3(&v1,&v2);

}

t2 = myself::getTime() - t1;

cout <<v1 <<'/t' <<v2 <<endl;

cout <<"Point pass parameter way used time:" <<t2 <<endl;

for (int i = 0; i < RUNTIME; ++i)

{

swap(v1,v2);

}

t2 = myself::getTime() - t1;

cout <<v1 <<'/t' <<v2 <<endl;

cout <<"STL way used time: " <<t2 <<endl;

return 0;

}

void swap1(int &v1, int &v2)

{

v1 = v1^v2;

v2 = v1^v2;

v1 = v1^v2;

}

void swap2(int &v1, int &v2)

{

int temp = v1;

v1 = v2;

v2 = temp;

}

void swap3(int *p1, int *p2)

{

int temp = *p1;

*p1 = *p2;

*p2 = temp;

}

结果是,指针效率一般最快,STL最慢,按位或没有效率优势,你可以改变RUNTIME去试试不同结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值