我已经编写/重写了一个包,想要完全测试它,不知道该怎么做。特别是当大量数据加载到包中时,它会慢慢爬行。
我已在wiki.tcl.tk
发布了该代码对于测试,假设您有12列& 10,000行。
我遇到问题的地方是Tcl2ExXML::outputXML
。
您将如何测试并修复它爬行的位置?
set Test_WB "";
set Test_WS "";
set ErrorHeadder "";
set ErrorText "";
set NormalHeadder "";
set DateCol "";
set Test_WB [Tcl2ExXML::CreateWorkbook "MassOrderLoad_[clock format [clock seconds] -format %Y%m%d%H%M%S]"]
set Test_WS [Tcl2ExXML::CreateWorkSheet $Test_WB "TestWS-[clock format [clock seconds] -format %Y-%m-%d]"]
set ErrorHeadder [Tcl2ExXML::CreateStyle $Test_WB -algnmt {-v bottom -h center} -font {-nm "Calibri" -ff "Swiss" -sz 14 -fc #FF0000 -b 1} -border {{top bottom left} -ls "continuous" -lw 3} -interior {-ic #DCE6F1 -ip "Solid"}]
set ErrorText [Tcl2ExXML::CreateStyle $Test_WB -algnmt {-v bottom -h center} -wrap 1 -font {-nm "Calibri" -ff "Swiss" -sz 11 -fc #FF0000}]
set NormalHeadder [Tcl2ExXML::CreateStyle $Test_WB -algnmt {-v bottom -h center} -font {-nm "Calibri" -ff "Swiss" -sz 14 -fc #000000 -b 1} -border {-bp {top bottom} -ls "continuous" -lw 3 -bp {left right} -ls "continuous" -lw 1} -interior {-ic #DCE6F1 -ip "Solid"}]
set DateCol [Tcl2ExXML::CreateStyle $Test_WB -datafmt ymd]
Tcl2ExXML::setColumnAttributes $Test_WS 26 -s $DateCol
Tcl2ExXML::setColumnAttributes $Test_WS 27 -s $DateCol
set RowNum [Tcl2ExXML::addRow $Test_WS -s $ErrorHeadder ERROR_MSG -s $NormalHeadder OPERATION \
-s $NormalHeadder RowData_1 -s $NormalHeadder RowData_2 \
-s $NormalHeadder RowData_3 -s $NormalHeadder RowData_4 \
-s $NormalHeadder RowData_5 -s $NormalHeadder RowData_6 \
-s $NormalHeadder RowData_7 -s $NormalHeadder RowData_8 \
-s $NormalHeadder RowData_9 -s $NormalHeadder RowData_10]
foreach Row $DataList
lassign $Row C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
set RowNum [Tcl2ExXML::addRow $Test_WS -s $ErrorText $C1 $C2 $C3 $C4 $C5 $C6 $C7 $C8 $C9 $C10 $C11 $C12]
}
set XML [Tcl2ExXML::outputXML $Test_WB]
puts "XML Created, Cleaning up."
puts $Chan $XML
close $Chan
Tcl2ExXML::DeleteWorkbook $Test_WB
答案 0 :(得分:0)
你在这里和那里要求的各种各样的东西可能是问题。你能将问题分成更小的部分并自己测量吗?试着弄清楚关键问题在哪里? (time
命令将帮助您获取一些硬数据。)
如果基本问题只是输出很大,将其写入临时文件可能是最佳选择。但这并不一定会有所帮助。
扫描完毕后,我发现了一些可能很昂贵的操作。特别是clock format
和array names
并不便宜。但这并不意味着他们解决了这个问题。我上面提到的那个向下钻取步骤是至关重要的。