测试TCL包;调整它以提高效率

时间:2017-12-08 21:47:33

标签: unit-testing tcl

我已经编写/重写了一个包,想要完全测试它,不知道该怎么做。特别是当大量数据加载到包中时,它会慢慢爬行。

我已在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

1 个答案:

答案 0 :(得分:0)

你在这里和那里要求的各种各样的东西可能是问题。你能将问题分成更小的部分并自己测量吗?试着弄清楚关键问题在哪里? (time命令将帮助您获取一些硬数据。)

如果基本问题只是输出很大,将其写入临时文件可能是最佳选择。但这并不一定会有所帮助。

扫描完毕后,我发现了一些可能很昂贵的操作。特别是clock formatarray names并不便宜。但这并不意味着他们解决了这个问题。我上面提到的那个向下钻取步骤是至关重​​要的。