[Pharo-project] [Vm-dev] Re: Can OSProcess functionality be
implemented using FFI instead of plugin?
Denis Kudriashov
dionisiydk at gmail.com
Sat Jan 23 15:30:28 UTC 2016
2016-01-22 22:35 GMT+01:00 Eliot Miranda <eliot.miranda at gmail.com>:
> Let's measure this. Let's say we have 8 platforms (that's an
> underestimate, because different Linux distributions may have different
> values for certain constants), but 8, which is 4 basic platforms times 32-
> & 64-bits. We have Mac x86 32-bit, Mac x64 64-bit, Windows x86
> 32-bit, Windows x64 64-bit, Linux x86 32-bit, Linux ARM 32-bit, Linux x64
> 64-bit, and soon enough there will be more. Further, there may be
> different versions over time.
>
> So each of those initialization methods has
> - 1 slot for the global variable to be assigned
> - 1 slot for the literal value to assign to it
> - 3 bytes of bytecode per initialization for small methods, 4 for large
> methods. Let's say 4.
>
> So the overhead in 32-bits is 12 bytes per constant, and in 64-bits is 20
> bytes. So the overhead per constant for all platforms is 96 bytes per
> constant in 32-bits and 160 bytes per constant for 64-bits. A full system
> with sockets, files, a database connexion etc could easily exceed 100
> constants. I think it would be nearer 1000. So the overheads are in the
> 10- to 100-k byte range (100k ~= 0.5% of the image) on 32-bits. That's low
> but it's also pure overhead. Every GC has to visit them. Every senders
> and implementors has to visit them, but they offer nothing of value.
> Whereas the small parser for whatever notation is used to store the
> constants externally (if they are needed in a given deployment) has a small
> constant overhead; its simple code.
>
> Further, you still need the machinery to export the constants to be able
> to generate these initialization methods. If you've got the machinery and
> you don't need the methods why bother to generate the methods?
>
> As the Scots say, many a mickle makes a muckle.
Thank's Eliot for such detailed explanation. It makes sense.
But personally I prefer Smalltalk solution although Smalltalk itself is
pure overhead comparing to C.
My question was raised by Mariano idea to save ston files in methods. I
think it can reduce problems which you described.
But then literal array syntax can be more suitable than ston.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160123/2543ddcf/attachment.htm
More information about the Vm-dev
mailing list