我有一个跳表包含一个模数转换器,先进先出,数模转换器,FIFO等。我想知道这些字是否在整个模块中使用或没有在模块中使用的.if应该返回未使用的字。我有一个程序,但执行时间太长了。请帮我弄一下这个。
代码如下:
Skip Search_In_Entire_Module(Skip List)
{
int sKey = 0
Skip sList = create()
string data = ""
string objText1
Object obj
for data in List do
{
int var_count = 0
for obj in m do
{
objText1 = obj."Object Text"
if objText1!=null then
{
if (isDeleted obj){continue}
if (table obj) {continue}
if (row obj) {continue}
if (cell obj) {continue}
Buffer buf = create()
buf = objText1
int index = 0
while(true)
{
index = contains(buf, data, index)
if(0 <= index)
{
index += length(data)
}
else
{
var_count++
break
}
}
delete(buf)
}
}
if (var_count ==0)
{
put(sList,sKey,data)
sKey++
}
}
return sList
}
Unused_Terminolody_Data = Search_In_Entire_Module(Terminology_Data)发布于 2018-02-16 23:02:34
我只是想知道:为什么这会出现在while循环中?
while(true)
{
index = contains(buf, data, index)
if(0 <= index)
{
index += length(data)
}
else
{
var_count++
break
}
}相反,我只会这样做:
index = contains ( buf, data )
if ( index == -1 ) {
var_count++
}
buf = ""我也不会一直删除和重新创建缓冲区。在创建对象变量的位置创建缓冲区,然后将其设置为等于"“以清除它,然后在程序结束时删除它。
如果这有帮助,请告诉我!
发布于 2018-02-20 22:36:02
Balthos提出了很好的观点,我认为你还可以做更多的事情。下面是我对你的函数的改编。注意事项:
我实现了Balthos的建议(上面),去掉了‘’循环,并且buffer
项目2可能不会对性能产生影响,但其他项目会影响性能。唯一的问题是,有多大?
请让我们知道这是否改善了您目前拥有的运行时间。我没有足够多的样本数据来与您的代码进行有意义的比较。
Module modCurrent = current
Skip skUnused_Terminology_Data = create
Skip skSeeking_Terminology_Data = create()
put (skSeeking_Terminology_Data, 0, "SPONG")
put (skSeeking_Terminology_Data, 1, "DoD")
void Search_In_Entire_Module(Skip skTermsSought, skTermsNotFound)
{
Object obj
Buffer bufObjText = create()
int intSkipKey = 0
int index = 0
string strSkipData = ""
for strSkipData in skTermsSought do
{
int var_count = 0
bool blFoundTerm = false
for obj in modCurrent do
{
if (isDeleted obj){continue}
if (table obj) {continue}
if (row obj) {continue}
if (cell obj) {continue}
bufObjText = obj."Object Text"
if (!null bufObjText) then
{
Regexp re = regexp2 strSkipData
blFoundTerm = search (re, bufObjText, 0)
if ( blFoundTerm ) {
put(skUnused_Terminology_Data, intSkipKey, strSkipData)
intSkipKey++
}
bufObjText = ""
}
}
delete (bufObjText)
}
Search_In_Entire_Module (skSeeking_Terminology_Data, skUnused_Terminology_Data)
string strNotFound
for strNotFound in skUnused_Terminology_Data do
{
print strNotFound "\n"
}
delete skUnused_Terminology_Data
delete skSeeking_Terminology_Datahttps://stackoverflow.com/questions/48821906
复制相似问题