`

把sprintf进行改造,提升将近4倍的拷贝速度

阅读更多
inline void CollectChar(char* _comSQL, const char *_pcAccounts, const char *_pcIP)
{	
	/*
	char  buff[128];
	_comSQL+=strlen(_comSQL);
	memset(buff, 0, sizeof(buff));
	sprintf(buff, " onrecv_account_logon('%s','%s'); ", _pcAccounts, _pcIP);
	strcpy(_comSQL, buff);
	*/
	char  buff[128];
	char *pbuff = buff;
	char *str1=" onrecv_account_logon('";
	char *str2="','";
	char *str3="'); ";
	_comSQL+=strlen(_comSQL);
	memset(buff, 0, sizeof(buff));
	//sprintf(buff, " onrecv_account_logon('%s','%s'); ", _pcAccounts, _pcIP);
	
	--pbuff, --str1;
	while(*++pbuff = *++str1);
	--pbuff, --_pcAccounts;
	while(*++pbuff = *++_pcAccounts);
	--pbuff, --str2;
	while(*++pbuff = *++str2);
	--pbuff, --_pcIP;
	while(*++pbuff = *++_pcIP);
	--pbuff, --str3;
	while(*++pbuff = *++str3);

	strcpy(_comSQL, buff);
}


/**/地方是我原先的函数,在本机上测试,100万的循环耗费40秒左右,改为while形式后,只需10-12秒左右

记录如下
最早用sprintf ,耗时为N
改为strcpy,耗时为N/2
改为while(*des++=*src++),性能提升为 (n/2)*20%
改为后缀的加,再次提升5%
改为inline,再次提升5% 

 
3
0
分享到:
评论
1 楼 Rainge 2008-07-19  
这哪像java代码 ?

相关推荐

    sprintf函数的解释

    sprintf 函数详解 sprintf 函数是一种格式化输出函数,经常用于嵌入式开发中输出问题的解决方案。该函数的用法与 printf 函数相似,但其输出结果是将格式化后的字符串保存到指定的字符数组中,而不是直接输出到屏幕...

    sprintf函数详细解释

    4. **安全性问题**:sprintf函数由于不检查目的字符串的空间大小,存在安全隐患。更安全的做法是使用其变体函数,如`snprintf`,它允许指定最大填充字符数,防止缓冲区溢出。 5. **格式化字符串示例**: - `...

    精简版sprintf

    精简版的`sprintf`函数,顾名思义,就是将原始的`sprintf`功能进行裁剪和优化,以适应低内存环境。这个过程通常包括以下步骤: 1. **功能筛选**:首先,我们需要确定哪些功能在目标应用中是必要的,哪些可以舍弃。...

    sprintf函数的用法

    sprintf函数是C语言标准库中的一个非常重要的函数,主要用于格式化输出数据,并将其存储在字符串中。在C++语言中也能使用,因为C++兼容C语言的标准库。sprintf函数的原型位于头文件中,函数原型为: int sprintf...

    sprintf,vsprintf越界问题

    4.对所有调用 sprintf 和 vsprintf 的地方进行检查,确保传入的参数不会导致越界。 5.使用内存保护机制,例如使用 heap protection 或者 stack protection 来防止越界。 四、总结 sprintf 和 vsprintf 越界问题是...

    字串格式化命令Sprintf详细介绍

    sprintf 函数详细介绍 sprintf 函数是 C 语言中一个非常重要的函数,它可以将格式化的数据写入到某个字符串中。sprintf 函数的原型是:int sprintf(char *buffer, const char *format [, argument] …);其中,...

    sprintf.js-1.0.2.zip

    《sprintf.js:JavaScript格式化字符串的强大工具》 在JavaScript编程中,我们经常需要处理字符串的格式化,将...通过掌握sprintf.js的用法,开发者可以更好地处理字符串操作,提升编程效率,让代码更加专业和高效。

    前端项目-sprintf.zip

    此外,`sprintf`还可以处理更复杂的格式,如对百分比、十六进制、二进制、科学记数法等进行格式化。在实际开发中,`sprintf`可以极大地提高代码的可读性和可维护性,特别是在需要多次插入和格式化值时。 总结,`...

    sprintf的用法详解.pdf

    ### sprintf的用法详解 #### 一、sprintf简介 `sprintf`函数是C语言标准库中的一个重要函数,用于格式化输出字符串。与`printf`函数类似,`sprintf`的主要作用是将格式化的字符串输出到一个指定的目标字符串中,而...

    sprintf优化版本,支持android 中文

    4. **格式化支持**:可能扩展了对更多格式化选项的支持,以便与原版`sprintf`保持兼容性。 `t_sprintf.h`则可能包含了函数的声明,让其他源文件可以正确地引用和使用这个优化后的`sprintf`函数。在使用时,需要先...

    sprintf.doc

    sprintf 函数最常见的应用之一是把整数打印到字符串中。例如: ```c sprintf(s, "%d", 123); // 产生“123” ``` sprintf 函数也可以指定宽度,不足的左边补空格。例如: ```c sprintf(s, "%8d%8d", 123, 4567); // ...

    sprintf函数详细介绍

    4. 浮点数的格式化输出:sprintf也可以用来格式化浮点数,并可以控制输出的宽度和小数位数。例如: ```c sprintf(s, "%f", 3.1415926); // 默认保留6位小数 sprintf(s, "%.2f", 3.1415926); // 保留两位小数 ...

    sprintf的用法

    ### sprintf的用法及其与printf的区别 在C语言编程中,`sprintf`和`printf`都是非常重要的函数,它们被广泛用于格式化字符串的输出。本文将深入探讨`sprintf`的用法,并通过与`printf`的对比来进一步理解这两种函数...

    sprintf的用法详解[文].pdf

    在使用 sprintf 函数时,需要注意一个符号扩展的问题:比如,假如我们想打印短整数(short )-1 的内存 16 进制表示形式,在 Win32 平台上,一个 short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它:...

    sprintf函数

    sprintf函数的详细介绍,里面详细介绍了sprintf 的基本用法,非常适合初学者。

    sprintf函数的用法详解

    本文对嵌入式开发领域中常用的sprintf函数进行了详细的介绍,刚入此行不甚了解的同学可以下载来看看学习一下

Global site tag (gtag.js) - Google Analytics