Changeset 1294 for fmts/trunk/p/C0XTEST.m
- Timestamp:
- Nov 12, 2011, 12:15:56 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fmts/trunk/p/C0XTEST.m
r1280 r1294 1 C0XTEST 2 ;;0.1;C0X;nopatch;noreleasedate;Build 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 EN 23 24 25 26 27 28 29 30 f zi=1:1:10000 d ; try a test of 10000 nodes31 32 33 34 35 36 37 38 39 40 41 42 43 W !," APPROXIMATELY ",$P(10000/C0XDIFF,".")," NODES PER SECOND"44 45 46 LKY9() 47 48 49 50 51 52 53 54 LKY17() 55 56 57 58 59 60 61 62 BULKLOAD(ZBFDA) 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 BLKERR 122 123 124 125 1 C0XTEST ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05 2 ;;0.1;C0X;nopatch;noreleasedate;Build 5 3 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU 4 ;General Public License See attached copy of the License. 5 ; 6 ;This program is free software; you can redistribute it and/or modify 7 ;it under the terms of the GNU General Public License as published by 8 ;the Free Software Foundation; either version 2 of the License, or 9 ;(at your option) any later version. 10 ; 11 ;This program is distributed in the hope that it will be useful, 12 ;but WITHOUT ANY WARRANTY; without even the implied warranty of 13 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 ;GNU General Public License for more details. 15 ; 16 ;You should have received a copy of the GNU General Public License along 17 ;with this program; if not, write to the Free Software Foundation, Inc., 18 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 ; 20 Q 21 ; 22 EN ; run the test 23 ; 24 k C0XFDA ; clear the node variable 25 i '$d(^C0X(101,0)) d ; global doesn't exist 26 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1" 27 n zg 28 S zg="_:G"_$$LKY9 ; all nodes are in the same graph 29 n zi 30 f zi=1:1:100000 d ; try a test of 10000 nodes 31 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name 32 . s C0XFDA(172.101,zi,.02)=zg 33 . s C0XFDA(172.101,zi,.03)=$R(100000) 34 . s C0XFDA(172.101,zi,.04)=$R(100000) 35 . s C0XFDA(172.101,zi,.05)=$R(100000) 36 S C0XST=$$NOW^XLFDT ; start of the insertion test 37 W !,"INSERTION STARTS AT ",C0XST,! 38 d BULKLOAD(.C0XFDA) 39 s C0XEND=$$NOW^XLFDT ; end of the insertion test 40 W !,"INSERTION ENDS AT ",C0XEND 41 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XST,2) 42 W !," ELAPSED TIME: ",C0XDIFF," SECONDS" 43 I C0XDIFF>0 W !," APPROXIMATELY ",$P(100000/C0XDIFF,".")," NODES PER SECOND" 44 q 45 ; 46 LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING 47 ; UNIQUE NODE AND GRAPH NAMES 48 N ZN,ZI 49 S ZN="" 50 F ZI=1:1:9 D ; 51 . S ZN=ZN_$R(10) 52 Q ZN 53 ; 54 LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING 55 ; UNIQUE NODE AND GRAPH NAMES 56 N ZN,ZI 57 S ZN="" 58 F ZI=1:1:17 D ; 59 . S ZN=ZN_$R(10) 60 Q ZN 61 ; 62 BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101 63 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE 64 ; QUITS IF FILE IS NOT 172.101 65 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1 66 ; QUITS IF FIRST ENTRY IS NOT IENS 1 67 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES 68 ; ZBFDA IS PASSED BY REFERENCE 69 ; 70 ; -- reserves a block of iens from file 172.101 by locking the zero node 71 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3 72 ; -- then unlocking to minimize the duration of the lock 73 ; 74 W !,"USING BULKLOAD" 75 I '$D(ZBFDA) Q ; EMPTY FDA 76 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE 77 N ZCNT,ZP3,ZP4 78 ; -- find the number of nodes to insert 79 S ZCNT=$O(ZBFDA(172.101,""),-1) 80 I ZCNT="" D Q ; 81 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT" 82 . B 83 ; -- lock the zero node and reserve a block of iens to insert 84 W !,"LOCKING ZERO NODE" 85 LOCK +^C0X(101,0) 86 S ZP3=$P(^C0X(101,0),U,3) 87 S ZP4=$P(^C0X(101,0),U,4) 88 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1 89 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1 90 LOCK -^C0X(101,0) 91 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE 92 S ZBASE=ZP3 ; the last ien in the file 93 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT 94 W !,$$NOW^XLFDT 95 S ZI="" 96 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ; 97 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name 98 . I ZN="" D BLKERR Q ; 99 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer 100 . I ZG="" D BLKERR Q ; 101 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer 102 . I ZS="" D BLKERR Q ; 103 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer 104 . I ZP="" D BLKERR Q ; 105 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer 106 . I ZO="" D BLKERR Q ; 107 . S ZIEN=ZI+ZBASE ; the new ien 108 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node 109 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index 110 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index 111 . S ^C0X(101,"SPO",ZS,ZP,ZO)="" 112 . S ^C0X(101,"SOP",ZS,ZO,ZP)="" 113 . S ^C0X(101,"OPS",ZO,ZP,ZS)="" 114 . S ^C0X(101,"OSP",ZO,ZS,ZP)="" 115 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)="" 116 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)="" 117 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)="" 118 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)="" 119 Q 120 ; 121 BLKERR ; 122 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI) 123 B 124 Q 125 ;
Note:
See TracChangeset
for help on using the changeset viewer.