Re: Slow reading of MSE file
by Stephan Eggermont
Without the progress bar
FMMSEParser>increment
"progBar ifNotNil: [progBar value: self pos]"
18 sec vs 32 sec with the progress bar.
Stephan
- 18299 tallies, 18304 msec.
**Tree**
--------------------------------
Process: (40s) Morphic UI process: nil
--------------------------------
71.1% {13018ms} MooseModel class>>importFrom:
71.1% {13018ms} MooseModel class>>importFrom:withMetamodel:
71.1% {13012ms} MSEImporter(FMImporter)>>run
71.1% {13006ms} FMMSEParser>>run
70.7% {12944ms} FMMSEParser>>basicRun
70.7% {12944ms} FMMSEParser>>Document
69.6% {12747ms} FMMSEParser>>Element
|61.2% {11199ms} FMMSEParser>>Attribute
| |30.6% {5605ms} MSEImporter(FMImporter)>>endAttribute:
| | |30.5% {5586ms} FMFutureElement>>endAttribute:
| | | 30.4% {5572ms} FMFutureAttribute>>endAttribute:
| | | 27.5% {5040ms} FMFutureAttribute>>maybeEnd
| | | |17.4% {3191ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | |11.0% {2014ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | | |5.0% {910ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | | | |3.8% {691ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | | | | 1.4% {248ms} FMMultivalueLink(Collection)>>detect:ifNone:
| | | | | | | |1.3% {230ms} FMMultivalueLink>>do:
| | | | | | | | 1.2% {218ms} OrderedCollection>>do:
| | | | | | | 1.1% {194ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | | |2.5% {459ms} FMMultivalueLink(Collection)>>detect:ifNone:
| | | | | | |2.3% {428ms} FMMultivalueLink>>do:
| | | | | | | 2.3% {412ms} OrderedCollection>>do:
| | | | | |2.2% {405ms} ByteString(String)>>=
| | | | | | |2.2% {397ms} primitives
| | | | | |1.1% {201ms} ByteSymbol(Symbol)>>asString
| | | | |2.9% {535ms} FMMultivalueLink(Collection)>>detect:ifNone:
| | | | | |2.5% {455ms} FMMultivalueLink>>do:
| | | | | | 2.3% {430ms} OrderedCollection>>do:
| | | | |2.4% {446ms} ByteString(String)>>=
| | | | | 2.3% {422ms} primitives
| | | |8.9% {1621ms} FM3PropertyDescription>>setOn:values:
| | | | 8.1% {1477ms} FAMIXParameterType(Object)>>mmSetProperty:to:
| | | | 7.9% {1453ms} FM3PropertyDescription>>setOn:rawValue:
| | | | 2.3% {423ms} ByteSymbol(Symbol)>>asMutator
| | | | |2.2% {394ms} ByteString(String)>>asSymbol
| | | | | 1.8% {328ms} Symbol class>>intern:
| | | | | 1.8% {328ms} Symbol class>>lookup:
| | | | | 1.8% {322ms} WeakSet>>like:
| | | | | 1.7% {318ms} WeakSet>>scanFor:
| | | | 1.5% {282ms} FAMIXMethod(FAMIXBehaviouralEntity)>>declaredType:
| | | | 1.5% {278ms} FMMultivalueLink class>>on:update:from:to:
| | | | 1.5% {278ms} FMMultivalueLink>>unsafeAdd:
| | | | 1.5% {274ms} OrderedCollection(SequenceableCollection)>>includes:
| | | | 1.5% {274ms} OrderedCollection(SequenceableCollection)>>indexOf:
| | | | 1.5% {270ms} OrderedCollection(SequenceableCollection)>>indexOf:ifAbsent:
| | | | 1.5% {270ms} OrderedCollection(SequenceableCollection)>>indexOf:startingAt:ifAbsent:
| | | | 1.4% {252ms} FAMIXMethod(Object)>>=
| | | 2.7% {493ms} PhexMatcher>>=
| |14.7% {2684ms} FMMSEParser>>Value
| | |7.3% {1330ms} FMMSEParser>>Primitive
| | | |5.6% {1021ms} FMMSEParser>>Number
| | | | |1.5% {268ms} Character>>isDigit
| | | | |1.3% {230ms} WriteStream>>reset
| | | | |1.2% {215ms} FMMSEParser>>backtrack:
| | | |1.0% {186ms} FMMSEParser>>String
| | |5.7% {1046ms} FMMSEParser>>Reference
| | | 2.9% {524ms} FMMSEParser>>Identifier
| |8.0% {1459ms} FMMSEParser>>tNAME
| | |3.2% {579ms} Character>>isAlphaNumeric
| | | |2.5% {449ms} Character>>isLetter
| | | | 1.7% {312ms} Character>>characterSet
| | | | 1.5% {267ms} EncodedCharSet class>>charsetAt:
| | | | 1.4% {259ms} Array(SequenceableCollection)>>at:ifAbsent:
| | | | 1.3% {237ms} primitives
| | |1.7% {317ms} FMMSEParser>>next
| | | 1.3% {237ms} MultiByteFileStream>>next
| |4.0% {738ms} MSEImporter(FMImporter)>>beginAttribute:
| | |3.9% {714ms} FMFutureElement>>beginAttribute:
| | | 2.8% {515ms} PhexMatcher>>beTrue
| | | 2.7% {494ms} PhexMatcher>>true
| | | 2.2% {405ms} PhexMatcher>>expectedUnknownMessageToReturn:
| | | 1.1% {195ms} Array(Collection)>>copyWithout:
| | | 1.0% {187ms} Array(Collection)>>reject:
| |1.4% {264ms} FMMSEParser>>tOPEN
| | 1.1% {207ms} primitives
|3.5% {637ms} MSEImporter(FMImporter)>>beginElement:
| |3.3% {596ms} FMFutureElement class>>with:name:
| | 3.2% {594ms} FMFutureElement>>with:name:
| | 2.8% {519ms} FM3MetaDescription>>createInstance
| | 2.6% {483ms} FAMIXNamespace class(Behavior)>>new
|2.9% {532ms} FMMSEParser>>tFULLNAME
| |1.3% {229ms} Character>>isAlphaNumeric
|1.5% {268ms} FMMSEParser>>Serial
1.1% {196ms} MSEImporter>>endDocument
1.1% {196ms} FMRepository>>addAll:
1.0% {191ms} FMRepository>>add:
1.0% {189ms} IdentitySet(Set)>>add:
**Leaves**
6.9% {1263ms} OrderedCollection>>do:
6.7% {1228ms} ByteString(String)>>=
3.8% {698ms} Array(SequenceableCollection)>>at:ifAbsent:
3.0% {556ms} FMMSEParser>>tOPEN
2.9% {528ms} FAMIXParameterizedType(Object)>>=
2.8% {513ms} UndefinedObject(ProtoObject)>>~~
2.0% {365ms} MultiByteFileStream(StandardFileStream)>>basicNext
1.8% {331ms} WriteStream>>reset
1.8% {323ms} ByteString class(String class)>>new:
1.7% {316ms} WriteStream>>nextPut:
1.5% {278ms} FMMSEParser>>tWHITESPACE
1.4% {263ms} MultiByteFileStream>>next
1.2% {218ms} FMMSEParser>>next
1.0% {192ms} FMMultivalueLink(Collection)>>detect:ifNone:
**Memory**
old +23,650,644 bytes
young -69,592 bytes
used +23,581,052 bytes
free +1,340,268 bytes
**GCs**
full 3 totalling 2,718ms (15.0% uptime), avg 906.0ms
incr 1252 totalling 2,384ms (13.0% uptime), avg 2.0ms
tenures 567 (avg 2 GCs/tenure)
root table 0 overflows
9 years, 9 months
Expressing that a property is mandatory
by Anne Etien
Hi,
I can't see how Fame enable to express that a Property in a metamodel is mandatory or not. The isMultivalued property of the FM3PropertyDescription class enables to specify that a property is multivalued or not, but nothing concerning the character mandatory of the property. Saying that in other words, it is possible to specify in a metamodel that the upper multiplicity of a property is '*' but I can't see how to specify the lower multiplicity.
For example considering the metamodel of stateMachine. A State is contained in one and only one StateMachine, whereas a StateMachine can contained 0 or several states. A transition has one and only one State as source and a state can be the source of 0 or several transitions.
Does Fame enable to express this mandatory characteristic?
Expressing such a thing may facilitate some generations. Indeed, when adding a State, we must specify its container but it is not mandatory to specify the transitions for which it is a source.
Thank you in advance for your help.
Anne
9 years, 9 months
Re: Configuring FAST metacello
by Stephan Eggermont
Stef wrote:
>I'm trying to parse ADA so may be after we will see if we can get FASTAda :)
FASTDelphi is also on our list.
Stephan
9 years, 9 months
Configuring FAST metacello
by Yuriy Tymchuk
Hi guys.
So Benjamin Arezki is working on PetitJava and FAST for Java and I'm very
happy about that. Now I want to make a well structured project with an
opportunity to integrate it into Moose.
Can anyone suggest me what to do with the configuration? Because it's hard
for me to understand me all the shenanigans with metacello. Should I store
each package separately, add all of them into a baseline and then add them
with versions to a 'version'?
I'd really like to make a good use of my project, but I need help form you
(especially Doru ;) )
Cheers!
Uko
--
View this message in context: http://moose-dev.97923.n3.nabble.com/Configuring-FAST-metacello-tp4028315...
Sent from the moose-dev mailing list archive at Nabble.com.
9 years, 9 months
Slow reading of MSE file
by Stephan Eggermont
Do I understand correctly that 36% of the time here is spend updating the progress bar?
Reading a JHotDraw7 mse.
| model stream |
stream := UITheme builder
fileOpen: 'Import model from MSE file'
extensions: #('mse').
stream isNil ifFalse: [
"name without extension"
MessageTally spyOn: [
model := MooseModel new.
model importFromMSEStream: stream.
stream close ].
model size > 0 ifTrue: [
model install.
]]
**Tree**
--------------------------------
Process: (40s) Morphic UI process: nil
--------------------------------
83.1% {26938ms} MooseModel class>>importFrom:
83.1% {26938ms} MooseModel class>>importFrom:withMetamodel:
83.1% {26932ms} MSEImporter(FMImporter)>>run
83.0% {26901ms} FMMSEParser>>run
83.0% {26897ms} FMMSEParser>>basicRun
83.0% {26897ms} FMMSEParser>>Document
82.1% {26615ms} FMMSEParser>>Element
38.4% {12451ms} FMMSEParser>>Attribute
|19.9% {6449ms} MSEImporter(FMImporter)>>endAttribute:
| |19.8% {6428ms} FMFutureElement>>endAttribute:
| | 19.8% {6409ms} FMFutureAttribute>>endAttribute:
| | 17.8% {5780ms} FMFutureAttribute>>maybeEnd
| | |11.1% {3590ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | |7.0% {2271ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | |3.3% {1072ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | | |2.5% {799ms} FM3MetaDescription>>attributeNamed:ifAbsent:
| | | | |1.7% {537ms} ByteString(String)>>=
| | | | | |1.6% {509ms} primitives
| | | | |1.6% {508ms} FMMultivalueLink(Collection)>>detect:ifNone:
| | | | | 1.5% {480ms} FMMultivalueLink>>do:
| | | | | 1.4% {467ms} OrderedCollection>>do:
| | | |1.9% {610ms} FMMultivalueLink(Collection)>>detect:ifNone:
| | | | |1.6% {508ms} FMMultivalueLink>>do:
| | | | | 1.4% {459ms} OrderedCollection>>do:
| | | |1.5% {478ms} ByteString(String)>>=
| | | | 1.4% {469ms} primitives
| | |5.9% {1912ms} FM3PropertyDescription>>setOn:values:
| | | 5.2% {1692ms} FAMIXParameterType(Object)>>mmSetProperty:to:
| | | 5.1% {1653ms} FM3PropertyDescription>>setOn:rawValue:
| | | 1.6% {526ms} ByteSymbol(Symbol)>>asMutator
| | | 1.5% {491ms} ByteString(String)>>asSymbol
| | | 1.2% {379ms} Symbol class>>intern:
| | | 1.2% {379ms} Symbol class>>lookup:
| | | 1.2% {377ms} WeakSet>>like:
| | | 1.2% {373ms} WeakSet>>scanFor:
| | 1.8% {575ms} PhexMatcher>>=
|8.8% {2844ms} FMMSEParser>>Value
| |4.2% {1365ms} FMMSEParser>>Primitive
| | |3.1% {1017ms} FMMSEParser>>Number
| |3.5% {1138ms} FMMSEParser>>Reference
| | 1.8% {583ms} FMMSEParser>>Identifier
|4.5% {1463ms} FMMSEParser>>tNAME
| |1.9% {610ms} Character>>isAlphaNumeric
| | |1.5% {479ms} Character>>isLetter
| |1.0% {340ms} FMMSEParser>>next
|2.9% {948ms} MSEImporter(FMImporter)>>beginAttribute:
| 2.8% {898ms} FMFutureElement>>beginAttribute:
| 2.1% {674ms} PhexMatcher>>beTrue
| 2.0% {663ms} PhexMatcher>>true
| 1.7% {541ms} PhexMatcher>>expectedUnknownMessageToReturn:
36.5% {11837ms} FMMSEParser>>increment
|36.5% {11837ms} Job>>value:
| 36.5% {11819ms} Job>>currentValue:
| 36.5% {11819ms} Job>>announceChange
| 36.5% {11814ms} Job>>announce:
| 36.4% {11789ms} SystemAnnouncer>>announce:
| 36.4% {11789ms} SystemAnnouncer(Announcer)>>announce:
| 36.3% {11775ms} SubscriptionRegistry>>deliver:
| 22.1% {7148ms} SubscriptionRegistry>>subscriptionsHandling:
| |10.3% {3326ms} WeakAnnouncementSubscription>>handles:
| | |8.7% {2823ms} MethodRemoved class(Announcement class)>>handles:
| | | |8.4% {2707ms} JobChange class(Behavior)>>inheritsFrom:
| | |1.6% {503ms} primitives
| |5.3% {1714ms} primitives
| |4.8% {1558ms} IdentitySet(Set)>>do:
| |1.3% {420ms} AnnouncementSubscription>>handles:
| | 1.1% {349ms} AnnouncementSet>>handles:
| 13.7% {4450ms} SubscriptionRegistry>>deliver:to:
| 13.6% {4403ms} SubscriptionRegistry>>deliver:to:startingAt:
| 13.5% {4364ms} AnnouncementSubscription>>deliver:
| 13.4% {4335ms} MessageSend>>cull:cull:
| 12.8% {4132ms} MessageSend>>cull:
| 12.4% {4032ms} MessageSend>>value:
| 12.4% {4030ms} MessageSend>>valueWithArguments:
| 12.0% {3902ms} SystemProgressMorph class>>updateJob:
| 8.5% {2754ms} JobProgressMorph>>progress:
| |7.2% {2333ms} JobProgressBarMorph>>progress:
| | 7.0% {2253ms} ProgressBarMorph>>value:
| | 7.0% {2253ms} ProgressBarMorph(Morph)>>changed
| | 6.9% {2251ms} ProgressBarMorph(Morph)>>invalidRect:
| | 6.9% {2251ms} ProgressBarMorph(Morph)>>invalidRect:from:
| | 6.9% {2246ms} JobProgressBarMorph(Morph)>>invalidRect:from:
| | 6.9% {2222ms} JobProgressMorph(Morph)>>invalidRect:from:
| | 6.8% {2214ms} SystemProgressMorph(Morph)>>invalidRect:from:
| | 6.8% {2210ms} PasteUpMorph>>invalidRect:from:
| | 6.3% {2025ms} Rectangle>>intersect:ifNone:
| | 3.3% {1081ms} Rectangle>>intersects:
| | |1.9% {620ms} SmallInteger>><=
| | | |1.7% {552ms} SmallInteger(Integer)>><=
| | | | 1.7% {552ms} Float>>adaptToInteger:andCompare:
| | | | 1.7% {538ms} Float>>asTrueFraction
| | |1.4% {450ms} SmallInteger>>>=
| | | 1.1% {359ms} SmallInteger(Integer)>>>=
| | | 1.1% {359ms} Float>>adaptToInteger:andCompare:
| | | 1.1% {348ms} Float>>asTrueFraction
| | 1.5% {471ms} SmallInteger>>>
| | |1.2% {390ms} SmallInteger(Integer)>>>
| | | 1.2% {390ms} Float>>adaptToInteger:andCompare:
| | | 1.2% {388ms} Float>>asTrueFraction
| | 1.2% {393ms} SmallInteger>><
| | 1.0% {327ms} SmallInteger(Integer)>><
| | 1.0% {325ms} Float>>adaptToInteger:andCompare:
| 3.0% {961ms} JobProgressMorph>>label:
| 2.8% {914ms} JobProgressMorph(Object)>>changed:
| 2.5% {811ms} SystemProgressMorph>>update:
| 2.1% {677ms} SystemProgressMorph>>updateWidth
| 2.1% {677ms} SystemProgressMorph>>resize
| 1.7% {562ms} SystemProgressMorph>>maxBarWidth
| 1.4% {458ms} JobProgressMorph(Morph)>>minExtent
2.7% {891ms} MSEImporter(FMImporter)>>beginElement:
|2.6% {836ms} FMFutureElement class>>with:name:
| 2.6% {829ms} FMFutureElement>>with:name:
| 2.1% {668ms} FM3MetaDescription>>createInstance
| 2.0% {638ms} FAMIXNamespace class(Behavior)>>new
2.4% {775ms} FMMSEParser>>tFULLNAME
|1.3% {408ms} Character>>isAlphaNumeric
| 1.0% {335ms} Character>>isLetter
1.1% {349ms} FMMSEParser>>Serial
**Leaves**
8.9% {2897ms} JobChange class(Behavior)>>inheritsFrom:
5.3% {1714ms} SubscriptionRegistry>>subscriptionsHandling:
5.1% {1649ms} IdentitySet(Set)>>do:
4.6% {1476ms} ByteString(String)>>=
4.4% {1423ms} OrderedCollection>>do:
2.2% {700ms} Array(SequenceableCollection)>>at:ifAbsent:
2.0% {637ms} FMMSEParser>>tOPEN
1.8% {598ms} SmallInteger(Number)>>negative
1.8% {582ms} UndefinedObject(ProtoObject)>>~~
1.8% {582ms} FAMIXParameterizedType(Object)>>=
1.6% {522ms} SmallInteger>>bitShift:
1.6% {503ms} WeakAnnouncementSubscription>>handles:
1.2% {395ms} MultiByteFileStream(StandardFileStream)>>basicNext
1.2% {388ms} WriteStream>>nextPut:
1.1% {372ms} FMMSEParser>>tWHITESPACE
1.0% {339ms} WriteStream>>reset
1.0% {336ms} Unicode class>>isLetter:
**Memory**
old +39,936,212 bytes
young -1,252,716 bytes
used +38,683,496 bytes
free +1,684,040 bytes
**GCs**
full 2 totalling 1,398ms (4.0% uptime), avg 699.0ms
incr 1844 totalling 3,883ms (12.0% uptime), avg 2.0ms
tenures 737 (avg 2 GCs/tenure)
root table 0 overflows
9 years, 9 months