0031918: Application Framework - New binary format for fast reading part of OCAF...
[occt.git] / tests / bugs / caf / bug31918_1
1 puts "==========="
2 puts "0031918: Application Framework - New binary format for fast reading part of OCAF document"
3 puts "==========="
4
5 set docname ${imagedir}/doc_${casename}.cbfl
6
7 NewDocument D0 BinLOcaf
8 UndoLimit D0 10
9
10 NewCommand D0
11
12 # set an array 1000 values from 100 to 1099
13 set values "100 "
14 for {set i 101} {$i < 1100} {incr i} {set values "$values $i"}
15
16 # set 100 arrays to sub-labels of 0:1 0:2 0:3 and 0:4
17 for {set lab 1} {$lab <= 4} {incr lab} {
18   for {set sublab 1} {$sublab <= 100} {incr sublab} {
19    set command "SetIntArray D0 0:$lab:$sublab 0 1 1000 $values"
20    eval $command
21    SetReal D0 0:$lab:$sublab 0.1
22   }
23 }
24
25 CommitCommand D0
26
27 SaveAs D0 ${docname}
28 Close D0
29
30 set whole_time [lindex [time {
31   Open ${docname} D1
32   Close D1
33 } 20] 0]
34 puts "Whole document open time $whole_time mcs"
35
36 set quater_time [lindex [time {
37   Open ${docname} D2 -read0:2
38   Close D2
39 } 20] 0]
40 puts "Quater of document open time $quater_time mcs"
41
42 # Check that open of quater of the document is at least twice faster than open of whole.
43 if { [expr $quater_time * 2] > $whole_time } {
44   puts "Error : loading of quater of the document content too slow relatively to the whole document load"
45 }
46
47 set four_quaters_time [lindex [time {
48   Open ${docname} D3 -read0:1 -read0:2 -read0:3 -read0:4
49   Close D3
50 } 20] 0]
51 puts "Four quaters of document open time $four_quaters_time mcs"
52
53 # Check that open of four quaters of the document is not too much slower than opening of the whole document.
54 if { [expr $four_quaters_time * 0.9] > $whole_time } {
55   puts "Error : loading of four quaters of the document content too slow relatively to the whole document load"
56 }
57
58 set no_arrays_time [lindex [time {
59   Open ${docname} D4 -skipTDataStd_IntegerArray -read0:2
60 }] 0]
61 puts "Quater of document without arrays open time $no_arrays_time mcs"
62
63 set attrs [Attributes D4 0:2:13]
64 if {"${attrs}" != "TDataStd_Real "} {
65   puts "Error : loading of document skipping arrays contains invalid attributes list '${attrs}'"
66 }
67
68 if {![catch {Attributes D4 0:1:1:13}] || ![catch {Attributes D4 0:1:3:14}] || ![catch {Attributes D4 0:1:4:1}]} {
69   puts "Error : loading of document skipping arrays and sub-trees contains invalid attributes list"
70 }
71
72 set append_arrays_time [lindex [time {
73   Open ${docname} D4 -append -readTDataStd_IntegerArray -read0:2 -read0:3
74 }] 0]
75 puts "Half of document arrays open time $append_arrays_time mcs"
76
77 set attrs [Attributes D4 0:2:13]
78 if {"${attrs}" != "TDataStd_Real TDataStd_IntegerArray "} {
79   puts "Error : loading of document reading arrays separately contains invalid attributes list '${attrs}'"
80 }
81 set attrs [Attributes D4 0:3:1]
82 if {"${attrs}" != "TDataStd_IntegerArray "} {
83   puts "Error : loading of document reading arrays separately contains invalid attributes list on subtree 3 '${attrs}'"
84 }
85 if {![catch {Attributes D4 0:1:1:13}] || ![catch {Attributes D4 0:1:4:1}]} {
86   puts "Error : loading of document reading arrays separately contains invalid attributes list on 1 and 4 subtrees"
87 }
88
89 Close D4