编写代码的程序:它应该使用“string”吗?[英] A program that writes code: should it use 'string'?

问题描述


我正在编写一个生成源代码的程序.看一个片段
以下.我的问题是关于使用不断增长的"代码"变量.
它有效率吗?这种情况推荐吗?

生成的代码可以增长很多.也许我应该分配一个大的
提前最大尺寸?

TIA,

-RFH
-------------

void SynthesizeTextField(CompleteField fullTextField)
{
字符串代码;
string baseFieldname = "文本";
串流 ss;
静态 int 子索引 = 1;

代码="字段";
代码 += baseFieldname;
ss <<子索引;
代码 += ss.str();
代码 += "";
代码 += "doc.FieldCreate(\"";
代码 += baseFieldname;
代码 += ss.str();
代码 += "\", 字段::e_text, \"\", \"\");";

子索引++;
}

推荐答案

Ramon F Herrera 写道:
>
我正在编写一个生成源代码的程序.看一个片段
以下.我的问题是关于使用不断增长的"代码"变量.
它有效率吗?是否推荐用于这种情况?

建议在优化之前进行测量.编写程序使其
很容易理解.当(且仅当)您遇到性能问题时,
不要猜测可能是什么原因;相反,使用分析器来识别
瓶颈,然后做点什么.

生成的代码可以增长很多.也许我应该分配一个大的
最大尺寸提前?
[截图]

如果分析显示附加到字符串的成本太高,则保留一个
一定的能力是首先要尝试的.这是最不打扰的
测量.
最佳

Kai-Uwe Bux

Ramon F Herrera <ra***@conexus.net 写道:
我正在编写一个生成源代码的程序.看一个片段
以下.我的问题是关于使用不断增长的"代码"变量.
它有效率吗?这种情况推荐吗?

生成的代码可以增长很多.也许我应该分配一个大的
最大尺寸提前?
std::string 只是一个向量
可能不需要这个特定的变量.

我认为您最好的选择是让自己的班级代表
"代码",如果对您有意义,请使用字符串实现该类.
好消息是你总是可以改变类的实现
稍后根据分析需要,而不影响任何其他代码.

6 月 1 日晚上 11:58,Ramon F Herrera <ra...@conexus.net 写道:
我正在编写一个生成源代码的程序.看一个片段
以下.我的问题是关于使用不断增长的"代码"变量.
它有效率吗?是否推荐用于这种情况?
生成的代码可以增长很多.也许我应该分配一个大的
最大尺寸提前?
-------------
void SynthesizeTextField(CompleteField fullTextField)
{
字符串代码;
string baseFieldname = "文本";
串流 ss;
静态 int 子索引 = 1;

代码="字段";
代码 += baseFieldname;
ss <<子索引;
代码 += ss.str();
代码 += "";
代码 += "doc.FieldCreate(\"";
代码 += baseFieldname;
代码 += ss.str();
代码 += "\", Field::e_text, \"\", \"\");";

子索引++;
}
对于初学者,我会直接生成(或支持生成)到
输出流.比如:

std::ostream&
SynthesizeTextField(
std::ostream&目的地,
... )
{
//...
返回目的地;
}

您在此处进行格式化(有些数据是数字,
显然),所以你不妨把整个事情当作一个
溪流.最后你肯定会输出它;

中的 C++ 源代码无能为力程序,所以你还不如直接生成到输出中
流,从不构建字符串.

--
James Kanze (GABI Software) 电子邮件:ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l''école, France, +33 (0)1 30 23 00 34

本文地址:https://www.itbaoku.cn/post/1050840.html