有关 C++里一些函数的计算速度测试

有关 C++里一些函数的计算速度测试


反三角比三角计算快,tanh计算比exp快...

atan2比atan慢这么多。  好神奇

#include<iostream>
#include <fstream>
#include <algorithm>
#include <time.h>
#include<windows.h>
using namespace std;
 
int main()
{
	double i, j, k, count = 1000;
	double tmp, time;
	clock_t start_time = clock();

	DWORD dwEnd, dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				//	tmp = atan(double(i) / j);
				tmp = rand();
			//	cout << tmp << endl;
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The rand run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count;++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = atan(double(i) /double(j));
			//	tmp = atan(rand());
			//	cout << tmp << endl;
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The atan run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();	
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = atan2(double(i) , double(j));
			//	tmp = atan2(rand(), j);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The atan2 run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = atan(double(i) / double(j));
				if (j > 0)
				{
					tmp += 1.7;
				}
				//	tmp = atan(rand());
				//	cout << tmp << endl;
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The atan + if run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = asin(double(i) / double(j));
			//	tmp = asin(rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The asin run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = asin(double(i) / double(j));
			//	tmp = acos(rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The acos run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间


	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = tanh(double(i) / double(j));
			//	tmp = tanh(rand());
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The tanh run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = exp(double(i) / j);

			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The exp run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间*/

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = log(double(i) / double(j));
			//		tmp = log(rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The log run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				//tmp = tan(i);
				tmp = tan(double(i) / double(j));
				//tmp = tan(rand());
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The tan run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = sin(double(i) / double(j));
			//	tmp = sin(rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The sin run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = cos(double(i) / double(j));
			//	tmp = cos(rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The cos run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = double(i) / double(j);
			//	tmp = double(i) /(rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The div run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = double(i) * double(j);// (rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The mult run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间


	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = double(i) + double(j);// (rand() / RAND_MAX);
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The add run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间

	dwStart = GetTickCount();
	for (k = 0; k < count; ++k)
	{
		for (i = 0; i < 256; ++i)
		{
			for (j = 1; j < 256; ++j)
			{
				tmp = double(i) - double(j);// / RAND_MAX;
			}
		}
	}
	dwEnd = GetTickCount();
	cout << "The add run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间









	clock_t end_time = clock();
	dwEnd = GetTickCount();
	time = double(end_time - start_time) / CLOCKS_PER_SEC;
	cout << time << "s" << endl;
	cout << "The run time is:" << (dwEnd - dwStart) << "ms!" << endl;//输出运行时间
	cin >> i;
	return 0;
}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 南京理工大学计算机科学与技术专业复试中的C语言上机环节主要考察学生对C语言基础知识的掌握和应用能力。 上机考试一般包括以下内容: 1. 编程能力:要求学生用C语言完成一定的编程任务,例如输出指定的图形、实现简单的算法等。这些任务旨在考察学生对基本语法的掌握以及解决问题的能力。 2. 程序调试:要求学生分析并改正给定的程序中存在的错误。这要求学生具备较强的程序分析能力和debug能力,能够速定位错误并有效修复。 3. 算法实现:要求学生使用C语言实现一些常用的算法,例如排序、查找等。通过编写这些算法,考察学生对基本算法思想的理解和应用能力。 在C语言上机考试中,除了要求准确完成任务外,还会重点关注代码的规范性、可读性和效率。良好的代码风格、清晰的注释和高效的算法设计会为考生加分。此外,还会对学生的编码速度和编程顺序进行评判。 总之,南京理工大学计算机科学与技术专业的C语言上机考试注重学生对C语言的熟练程度和编程能力的实际应用。通过这个环节的考察,学校可以初步评估考生的编程实力和潜力,为后续的复试环节提供参考。 ### 回答2: 南理工计算机复试C语言上机是指在考试中采用C语言进行编程题目的解答。这个环节主要考察考生对C语言的掌握程度以及解决问题的能力。 首先,考生需要对C语言的基本语法和常用库函数有一定的了解,并能够灵活运用。在上机题目中,通常会要求考生完成一些简单的编程任务,如变量的定义和使用、条件语句和循环语句等的运用、数组和字符串的处理,以及函数的定义和调用等。考生需要灵活运用C语言的各种语法,能够正确地编写代码并且能够使其按要求正确运行。 其次,考生需要具备解决问题的能力。在上机环节中,往往会给出一些实际应用场景的问题,考生需要根据题目的要求,分析问题、设计算法,并用C语言编写对应的代码。这要求考生能够理解问题的本质,并能够将其转化为具体的编程任务。解决问题的能力是计算机科学与技术专业的核心能力之一,通过上机环节的考察,可以初步体现考生的编程能力。 总之,南理工计算机复试C语言上机是一个对考生C语言掌握程度和解决问题能力的综合考察。通过这个环节,考官可以初步评估考生的编程能力和潜力,对考生是否适合进入该专业进行初步筛选。因此,考生在复试前应该充分准备C语言的基本知识和编程技巧,并在解答问题时注重问题的分析和代码的实现。 ### 回答3: 南理工计算机复试C上机主要包括两个方面的内容:编程能力测试和机试。 编程能力测试是对考生编程基本功的考核。通常会给出一道题目,考生需要根据题目的要求完成相应的编程任务,例如实现某个算法、解决某个问题等。这部分考核主要考察考生的逻辑思维能力、编程能力和解决问题的能力。考生需要使用C语言完成编程任务,并保证代码的正确性和效率。 机试是对考生综合应用计算机知识的考核。考试过程中会给出一些调试代码的题目,要求考生找出代码中的错误以及给出正确的修复方案。这部分考核主要考察考生对计算机知识的掌握程度以及问题分析和解决的能力。考生需要对代码进行逐行分析,找出错误,并提供正确的修复方案。 为了顺利通过南理工计算机复试C上机考试,考生需要做好以下准备工作:熟悉C语言的基本语法和常用库函数;掌握常见的算法和数据结构;多做编程练习,提高编程能力和解决问题的能力;了解常见的调试技巧,熟练运用调试工具。 在考试过程中,考生需要注意以下几点:认真审题,理解题目要求;合理规划代码结构,遵循编程规范;注意代码的健壮性和可读性;注重错误处理,避免程序崩溃;有条不紊地进行代码调试,逐行分析并定位错误。 通过南理工计算机复试C上机考试,考生可以展示自己的编程能力和解决问题的能力,同时也为后续的面试环节做好了准备。希望考生在考试中取得好成绩,顺利进入南理工计算机专业!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值