On 06.03.2014, at 16:25, Goubier Thierry <thierry.goubier@cea.fr> wrote:
Le 06/03/2014 16:14, Max Leske a écrit :
On 06.03.2014, at 15:53, Stephan Eggermont <stephan@stack.nl> wrote:
Max wrote:
I donât quite follow. What do you mean by methods?
When mapping methods to files, there is the problem that on disk files take a minimum amount of space, often 4KB. This slows writing a package to disk down a lot.
I see. There are two things to consider: 1. the format we use to store source 2. the fact that Git will create one blob per file
Git will pack blobs in a kind of archive file, in .pack files.
That is only partly true: - packs will be generated when objects are transferred over the network (this may be partial packs) - packs can be force generated by using âgit gcâ - packs will be periodically created / updated to reduce size on disk But: the main storage form (and the fastest for access) are loose objects (i.e. single files) Just for completeness :) Max
Obviously, by choosing a source storage format that avoids this problem, we donât have to deal with the second issue. If you go with something like FileTree, which uses a single file per method, this changes. By combining multiple files (e.g. by zipping) we could avoid the problem of tiny blobs but we would loose the ability to look at the repository from the outside. This is something I donât want to do. It creates a dependency to Pharo (and to the particular implementation of how those files are stored) and unneeded complexity (especially with regard to maintenance).
+1.
In my opinion there are other factors, like readability, maintenance etc, that are maybe more important than speed.
I agree with that :)
Thierry
So yes, potentially we could do something about fragmentation but I wonât promise you anything. Does that answer your question?
Cheers, Max
Stephan
-- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95