|
Packit |
1470ea |
# Greek translation for gnome-devel-docs.
|
|
Packit |
1470ea |
# Copyright (C) 2010 gnome-devel-docs's COPYRIGHT HOLDER
|
|
Packit |
1470ea |
# This file is distributed under the same license as the gnome-devel-docs package.
|
|
Packit |
1470ea |
# Marios Zindilis <m.zindilis@dmajor.org>, 2010.
|
|
Packit |
1470ea |
# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2013.
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Project-Id-Version: gnome-devel-docs master\n"
|
|
Packit |
1470ea |
"POT-Creation-Date: 2015-11-18 08:53+0000\n"
|
|
Packit |
1470ea |
"PO-Revision-Date: 2015-11-18 12:41+0200\n"
|
|
Packit |
1470ea |
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
|
Packit |
1470ea |
"Language-Team: team@gnome.gr\n"
|
|
Packit |
1470ea |
"Language: el\n"
|
|
Packit |
1470ea |
"MIME-Version: 1.0\n"
|
|
Packit |
1470ea |
"Content-Type: text/plain; charset=UTF-8\n"
|
|
Packit |
1470ea |
"Content-Transfer-Encoding: 8bit\n"
|
|
Packit |
1470ea |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
Packit |
1470ea |
"X-Generator: Poedit 1.8.5\n"
|
|
Packit |
1470ea |
"X-Project-Style: gnome\n"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
|
|
Packit |
1470ea |
msgctxt "_"
|
|
Packit |
1470ea |
msgid "translator-credits"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Ελληνική μεταφραστική ομάδα GNOME <team@gnome.gr>, 2009-2015\n"
|
|
Packit |
1470ea |
"Δημήτρης Σπίγγος <dmtrs32@gmail.com>, 2013\n"
|
|
Packit |
1470ea |
"Γιάννης Κατσαμπίρης <giannis1_86@hotmail.com>, 2010\n"
|
|
Packit |
1470ea |
"Σίμος Ξενιτέλλης <simos@gnome.org>, 2009\n"
|
|
Packit |
1470ea |
"Κωνσταντίνος Κουράτορας <kouratoras@gmail.com>, 2010\n"
|
|
Packit |
1470ea |
"Σωτηρία Τζιούρη <sotitz@gmail.com>, 2010\n"
|
|
Packit |
1470ea |
"Τζένη Πετούμενου <epetoumenou@gmail.com>, 2009\n"
|
|
Packit |
1470ea |
"Τουρνάρης Παύλος-Πέτρος <p.tournaris@gmail.com>, 2010"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/title
|
|
Packit |
1470ea |
#: C/harmful.page:7
|
|
Packit |
1470ea |
msgid "Disk Seeks Considered Harmful"
|
|
Packit |
1470ea |
msgstr "Οι αναζητήσεις δίσκου θεωρούνται επιβλαβής"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/harmful.page:8 C/index.page:54
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Disk seeks are one of the most expensive operations you can possibly perform. "
|
|
Packit |
1470ea |
"You might not know this from looking at how many of them we perform, but trust "
|
|
Packit |
1470ea |
"me, they are. Consequently, please refrain from the following suboptimal "
|
|
Packit |
1470ea |
"behavior:"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Οι αναζητήσεις του δίσκου είναι από τις ποιο δαπανηρές διαδικασίες που μπορείτε "
|
|
Packit |
1470ea |
"ενδεχομένως να εκτελέσετε. Μπορεί να μην το καταλάβετε αυτό απλά εξετάζοντας "
|
|
Packit |
1470ea |
"πόσες από αυτές εκτελείτε, αλλά πιστέψτε μας, είναι πολλές. Συνεπώς, παρακαλώ "
|
|
Packit |
1470ea |
"να αποφεύγεται την ακόλουθη μη-βέλτιστη συμπεριφορά:"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:13
|
|
Packit |
1470ea |
msgid "Placing lots of small files all over the disk."
|
|
Packit |
1470ea |
msgstr "Τοποθετώντας πολλά μικρά αρχεία παντού στον δίσκο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:18
|
|
Packit |
1470ea |
msgid "Opening, stating, and reading lots of files all over the disk"
|
|
Packit |
1470ea |
msgstr "Άνοιγμα, δηλώσεις, και ανάγνωση πολλών μικρών αρχείών παντού στον δίσκο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:23
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Doing the above on files that are laid out at different times, so as to ensure "
|
|
Packit |
1470ea |
"that they are fragmented and cause even more seeking."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Κάνοντας τα ανωτέρω σε αρχεία που δημιουργήθηκαν σε διαφορετικούς χρόνους, ώστε "
|
|
Packit |
1470ea |
"να εξασφαλιστεί ότι είναι τεμαχισμένα και να προκαλούν ακόμη περισσότερη "
|
|
Packit |
1470ea |
"αναζήτηση."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:28
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Doing the above on files that are in different directories, so as to ensure "
|
|
Packit |
1470ea |
"that they are in different cylinder groups and cause even more seeking."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Κάνοντας τα ανωτέρω σε αρχεία που είναι σε διαφορετικούς καταλόγους, ώστε να "
|
|
Packit |
1470ea |
"εξασφαλιστεί ότι βρίσκονται σε διαφορετικές ομάδες κυλίνδρων και έτσι να "
|
|
Packit |
1470ea |
"προκαλεί ακόμη περισσότερη αναζήτηση."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:33
|
|
Packit |
1470ea |
msgid "Repeatedly doing the above when it only needs to be done once."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Επαναλαμβανόμενη εκτέλεση των ανωτέρω όταν θα έπρεπε να γίνει μια μόνο φορά."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#: C/harmful.page:38
|
|
Packit |
1470ea |
msgid "Ways in which you can optimize your code to be seek-friendly:"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τρόποι με τους οποίους μπορείτε να βελτιστοποιήσετε τον κώδικά σας για είναι "
|
|
Packit |
1470ea |
"φιλικός με τις αναζητήσεις:"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:43
|
|
Packit |
1470ea |
msgid "Consolidate data into a single file."
|
|
Packit |
1470ea |
msgstr "Παγιώστε τα δεδομένα σε ένα ενιαίο αρχείο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:48
|
|
Packit |
1470ea |
msgid "Keep data together in the same directory."
|
|
Packit |
1470ea |
msgstr "Κρατήστε τα δεδομένα μαζί στον ίδιο κατάλογο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:53
|
|
Packit |
1470ea |
msgid "Cache data so as to not need to reread constantly."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τοποθέτηση των δεδομένων στην προσωρινή μνήμη ώστε να μην χρειάζεται συνεχώς να "
|
|
Packit |
1470ea |
"ξαναδιαβάζονται."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:58
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Share data so as not to have to reread it from disk when each application loads."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Διαμοιρασμός δεδομένων ώστε να μη χρειάζεται να τα ξαναδιαβάζει από το δίσκο "
|
|
Packit |
1470ea |
"κάθε εφαρμογή όταν φορτώνει."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/harmful.page:63
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Consider caching all of the data in a single binary file that is properly "
|
|
Packit |
1470ea |
"aligned and can be mmaped."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Καλύτερα να αντιγράφετε όλα τα δεδομένα στην προσωρινή μνήμη σε ένα ενιαίο "
|
|
Packit |
1470ea |
"δυαδικό αρχείο που ευθυγραμμίζεται κατάλληλα και μπορεί να είναι mmaped."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#: C/harmful.page:68
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The trouble with disk seeks are compounded for reads, which is unfortunately "
|
|
Packit |
1470ea |
"what we are doing. Remember, reads are generally synchronous while writes are "
|
|
Packit |
1470ea |
"asynchronous. This only compounds the problem, serializing each read, and "
|
|
Packit |
1470ea |
"contributing to program latency."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Το πρόβλημα με την αναζητήσεις δίσκων είναι αρκετά σύνθετο όσο αναφορά την "
|
|
Packit |
1470ea |
"ανάγνωση, το όποιο είναι δυστυχώς αυτό που κάνουμε. Να θυμάστε, η ανάγνωση "
|
|
Packit |
1470ea |
"είναι γενικά σύγχρονή ενώ η εγγραφή είναι ασύγχρονη. Αυτό κάνει ποιο σύνθετο το "
|
|
Packit |
1470ea |
"πρόβλημα, διατάσσοντας σειριακά κάθε ανάγνωση, και συμβάλλοντας στη λανθάνουσα "
|
|
Packit |
1470ea |
"κατάσταση του προγράμματος."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: license/p
|
|
Packit |
1470ea |
#: C/index.page:7
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Permission is granted to copy, distribute and/or modify this document under the "
|
|
Packit |
1470ea |
"terms of the GNU Free Documentation License, Version 1.1 or any later version "
|
|
Packit |
1470ea |
"published by the Free Software Foundation with no Invariant Sections, no Front-"
|
|
Packit |
1470ea |
"Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free "
|
|
Packit |
1470ea |
"Documentation License from the Free Software Foundation by visiting
|
|
Packit |
1470ea |
"\"http://www.fsf.org\">their Web site</link> or by writing to: Free Software "
|
|
Packit |
1470ea |
"Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1335, USA."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Χορηγείται άδεια για αντιγραφή, διανομή ή/και τροποποίηση του παρόντος εγγράφου "
|
|
Packit |
1470ea |
"υπό τους όρους της GNU Free Documentation License, έκδοση 1.1 ή οποιασδήποτε "
|
|
Packit |
1470ea |
"μεταγενέστερης έκδοσης που δημοσιεύεται από το Free Software Foundation χωρίς "
|
|
Packit |
1470ea |
"αμετάβλητα τμήματα, χωρίς κείμενο εξωφύλλου, και χωρίς κείμενο οπισθόφυλλου. "
|
|
Packit |
1470ea |
"Μπορείτε να λάβετε ένα αντίγραφο της GNU Free Documentation License από το Free "
|
|
Packit |
1470ea |
"Software Foundation με μία επίσκεψη στο
|
|
Packit |
1470ea |
"\">δικτυακό τους τόπο</link> ή με γράμμα στο: Free Software Foundation, Inc., "
|
|
Packit |
1470ea |
"51 Franklin Street, Fifth Floor Boston, MA 02110-1335, USA."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: license/p
|
|
Packit |
1470ea |
#: C/index.page:16
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Many of the names used by companies to distinguish their products and services "
|
|
Packit |
1470ea |
"are claimed as trademarks. Where those names appear in any GNOME documentation, "
|
|
Packit |
1470ea |
"and those trademarks are made aware to the members of the GNOME Documentation "
|
|
Packit |
1470ea |
"Project, the names have been printed in caps or initial caps."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Πολλά από τα ονόματα που χρησιμοποιούνται από τις επιχειρήσεις για να "
|
|
Packit |
1470ea |
"διαφοροποιήσουν τα προϊόντα τους και τις υπηρεσίες τους εμφανίζονται ως "
|
|
Packit |
1470ea |
"εμπορικά σήματα. Όπου αυτά τα ονόματα εμφανίζονται σε οποιαδήποτε τεκμηρίωση "
|
|
Packit |
1470ea |
"του GNOME, και αυτά τα εμπορικά σήματα γίνονται γνωστά στα μέλη του έργου "
|
|
Packit |
1470ea |
"τεκμηρίωσης του GNOME, τα ονόματα θα τυπώνονται με κεφαλαία γράμματα ή γράμματα "
|
|
Packit |
1470ea |
"τίτλων."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: credit/years
|
|
Packit |
1470ea |
#: C/index.page:24 C/index.page:28
|
|
Packit |
1470ea |
msgid "2004-2005"
|
|
Packit |
1470ea |
msgstr "2004-2005"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: credit/name
|
|
Packit |
1470ea |
#: C/index.page:25
|
|
Packit |
1470ea |
msgid "Callum McKenzie"
|
|
Packit |
1470ea |
msgstr "Callum McKenzie"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: credit/name
|
|
Packit |
1470ea |
#: C/index.page:29
|
|
Packit |
1470ea |
msgid "Robert Love"
|
|
Packit |
1470ea |
msgstr "Robert Love"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: info/desc
|
|
Packit |
1470ea |
#: C/index.page:32
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Software can be optimized in many ways: for speed, program size, or memory use. "
|
|
Packit |
1470ea |
"This section contains guides and tutorials for optimizing your software."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Το λογισμικό μπορεί να βελτιστοποιηθεί από πολλές απόψεις: για την ταχύτητα, το "
|
|
Packit |
1470ea |
"μέγεθος του προγράμματος, ή τη χρήση μνήμης. Αυτό το τμήμα περιέχει οδηγούς και "
|
|
Packit |
1470ea |
"σεμινάρια για τη βελτιστοποίηση του λογισμικού σας."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/title
|
|
Packit |
1470ea |
#: C/index.page:35
|
|
Packit |
1470ea |
msgid "Optimization Guide"
|
|
Packit |
1470ea |
msgstr "Οδηγός βελτιστοποίησης"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/index.page:38 C/massif.page:12
|
|
Packit |
1470ea |
msgid "Introduction"
|
|
Packit |
1470ea |
msgstr "Εισαγωγή"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/index.page:39
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"This is a brief introduction to optimization, both the hows and the whys. "
|
|
Packit |
1470ea |
"Details of individual tools and techniques are left for later articles, but a "
|
|
Packit |
1470ea |
"collection of hints and tricks is provided."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Αυτή είναι μια σύντομη εισαγωγή στη βελτιστοποίηση, τόσο στο πώς όσο και στο "
|
|
Packit |
1470ea |
"γιατί. Οι λεπτομέρειες για ξεχωριστά εργαλεία και τεχνικές παραλείπονται για "
|
|
Packit |
1470ea |
"μελλοντικά άρθρα, αλλά παρέχεται μια συλλογή από υποδείξεις και κόλπα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/index.page:45
|
|
Packit |
1470ea |
msgid "Massif"
|
|
Packit |
1470ea |
msgstr "Massif"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#: C/index.page:46 C/massif.page:9
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"This article describes how to use the <app>Massif</app> heap profiler with "
|
|
Packit |
1470ea |
"GNOME applications. We describe how to invoke, interpret, and act on the output "
|
|
Packit |
1470ea |
"of <app>Massif</app>. The <app>Swell Foop</app> game is used as an example."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Αυτό το άρθρο περιγράφει πώς χρησιμοποιείται ο σωρός κατατομών <app>Massif</"
|
|
Packit |
1470ea |
"app> με εφαρμογές του GNOME. Περιγράφουμε πώς να τον καλέσετε, να τον "
|
|
Packit |
1470ea |
"ερμηνεύσετε και πώς να ενεργήσετε βάσει των αποτελεσμάτων του <app>Massif</"
|
|
Packit |
1470ea |
"app>. Ως παράδειγμα χρησιμοποιούμε το παιχνίδι <app>Swell Foop</app>."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/index.page:53
|
|
Packit |
1470ea |
msgid "Harmfulness"
|
|
Packit |
1470ea |
msgstr "Βλαβερότητα"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/title
|
|
Packit |
1470ea |
#: C/introduction.page:7
|
|
Packit |
1470ea |
msgid "What are we Optimizing?"
|
|
Packit |
1470ea |
msgstr "Τι θα βελτιστοποιήσουμε;"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#: C/introduction.page:8
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"When we optimize for GNOME the first thing to remember is this: we are not "
|
|
Packit |
1470ea |
"trying to make the program better, we are trying to make the person using the "
|
|
Packit |
1470ea |
"computer happier."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Όταν βελτιστοποιούμε για το GNOME, το πρώτο πράγμα που θυμόμαστε είναι ότι δεν "
|
|
Packit |
1470ea |
"προσπαθούμε να κάνουμε ένα πρόγραμμα καλύτερο, προσπαθούμε να κάνουμε το χρήστη "
|
|
Packit |
1470ea |
"που χρησιμοποιεί τον υπολογιστή πιο ευχαριστημένο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#: C/introduction.page:10
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Better programs make people happier, but there are some improvements that will "
|
|
Packit |
1470ea |
"make them a lot happier than others: Responsiveness, start-up time, easy to "
|
|
Packit |
1470ea |
"access commands and not having the computer go into swap the moment more than "
|
|
Packit |
1470ea |
"two programs are open."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Καλύτερα προγράμματα σημαίνει πιο ευχαριστημένοι χρήστες, αλλά υπάρχουν μερικές "
|
|
Packit |
1470ea |
"βελτιώσεις που θα τους κάνουν πιο ευχαριστημένους από άλλες: η σπιρτάδα της "
|
|
Packit |
1470ea |
"ανταπόκρισης, ο χρόνος εκκίνησης, η ευκολία στην πρόσβαση των εντολών και το να "
|
|
Packit |
1470ea |
"μην γίνεται πολύ αργός ο υπολογιστής όταν υπάρχουν ανοικτά περισσότερα από δύο "
|
|
Packit |
1470ea |
"προγράμματα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/p
|
|
Packit |
1470ea |
#: C/introduction.page:13
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Traditional optimization tackles concepts like CPU use, code size, the number "
|
|
Packit |
1470ea |
"of mouse clicks and the memory use of the program. This second list has been "
|
|
Packit |
1470ea |
"chosen to correlate with the first list, however there is an important "
|
|
Packit |
1470ea |
"difference: The person using GNOME doesn't care about the second list, but they "
|
|
Packit |
1470ea |
"care a lot about the first list. When optimizing GNOME programs we will reduce "
|
|
Packit |
1470ea |
"CPU use, memory use and all those things, but these are the means to the end, "
|
|
Packit |
1470ea |
"not the final goal. We are optimizing for people."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η παραδοσιακή βελτιστοποίηση ασχολείται με έννοιες όπως η χρήση του "
|
|
Packit |
1470ea |
"επεξεργαστή, το μέγεθος του κώδικα, ο αριθμός των κλικ του ποντικιού και η "
|
|
Packit |
1470ea |
"χρήση της μνήμης από το πρόγραμμα. Αυτή η δεύτερη λίστα έχει επιλεγεί για να "
|
|
Packit |
1470ea |
"συσχετίζεται με την πρώτη, ωστόσο υπάρχει μια σημαντική διαφορά: Αυτός που "
|
|
Packit |
1470ea |
"χρησιμοποιεί το GNOME δε νοιάζεται για τη δεύτερη λίστα, νοιάζεται όμως πολύ "
|
|
Packit |
1470ea |
"για την πρώτη. Όταν βελτιστοποιούμε προγράμματα του GNOME μειώνουμε τη χρήση "
|
|
Packit |
1470ea |
"του επεξεργαστή, της μνήμης και λοιπά, αλλά όλα αυτά είναι μέσα για να "
|
|
Packit |
1470ea |
"προχωρήσουμε, όχι για τον τελικό μας σκοπό. Εμείς βελτιστοποιούμε για τους "
|
|
Packit |
1470ea |
"ανθρώπους."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/introduction.page:18
|
|
Packit |
1470ea |
msgid "Doing the Optimization"
|
|
Packit |
1470ea |
msgstr "Εφαρμόζοντας τη βελτιστοποίηση"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/introduction.page:19
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The previous section omitted one important qualifier: To optimize something it "
|
|
Packit |
1470ea |
"has to be measurable. You can't measure happiness. However, you can measure "
|
|
Packit |
1470ea |
"start-up time so you can tell if you have improved it. Happiness will then, "
|
|
Packit |
1470ea |
"hopefully, follow."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η προηγούμενη ενότητα παρέλειψε ένα σημαντικό παράγοντα: για να βελτιστοποιηθεί "
|
|
Packit |
1470ea |
"κάτι πρέπει να είναι μετρήσιμο. Δε μπορείτε να βελτιστοποιήσετε την "
|
|
Packit |
1470ea |
"ευχαρίστηση. Ωστόσο, μπορείτε να μετρήση το χρόνο εκκίνησης ώστε να μπορείτε να "
|
|
Packit |
1470ea |
"δείτε αν τον έχετε βελτιώσει. Ευελπιστούμε ότι η ευτυχία θα επέλθει."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/introduction.page:22
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Optimization is the process of measurement, refinement and re-measurement. So "
|
|
Packit |
1470ea |
"the first thing you must do is find a way to measure what you are optimizing. "
|
|
Packit |
1470ea |
"Ideally this measurement is a single number, for example: the time taken to "
|
|
Packit |
1470ea |
"perform a task. This is your benchmark, it is the only way to tell if you are "
|
|
Packit |
1470ea |
"winning or losing. There is a big difference between a program that should</"
|
|
Packit |
1470ea |
"em> be fast and a program that is fast."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η βελτιστοποίηση είναι μια διαδικασία μέτρησης, βελτίωσης και μέτρησης ξανά. "
|
|
Packit |
1470ea |
"Οπότε το πρώτο πράγμα που πρέπει να κάνετε είναι να βρείτε έναν τρόπο για να "
|
|
Packit |
1470ea |
"μετρήσετε αυτό που βελτιστοποιείτε. Στην καλύτερη περίπτωση, αυτή η μέτρηση θα "
|
|
Packit |
1470ea |
"είναι ένας μοναδικός αριθμός, για παράδειγμα ο χρόνος που χρειάζεται για να "
|
|
Packit |
1470ea |
"ολοκληρωθεί μια εργασία. Αυτή η είναι η δοκιμή μέτρησής σας, και είναι ο "
|
|
Packit |
1470ea |
"μοναδικός τρόπος για να δείτε αν κερδίζετε ή αν χάνετε. Υπάρχει τεράστια "
|
|
Packit |
1470ea |
"διαφορά ανάμεσα σε ένα πρόγραμμα που θα έπρεπε να είναι γρήγορο και σε "
|
|
Packit |
1470ea |
"ένα που είναι γρήγορο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/introduction.page:25
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Once you have a basic benchmark you need to find out why your code is not doing "
|
|
Packit |
1470ea |
"as well as it should. It is tempting to do this by inspection: just looking at "
|
|
Packit |
1470ea |
"the code and trying to spot something that looks like it needs improvement. You "
|
|
Packit |
1470ea |
"will invariably be wrong. Using a profiler to get a detailed break-down of what "
|
|
Packit |
1470ea |
"your program really does is the only way to be sure."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Όταν θα έχετε μια βασική δοκιμή μέτρησης θα πρέπει να ανακαλύψετε γιατί ο "
|
|
Packit |
1470ea |
"κώδικάς σας δεν πάει τόσο καλά όσο θα έπρεπε. Είναι δελεαστικό να το κάνετε "
|
|
Packit |
1470ea |
"αυτό παρατηρώντας: να κοιτάτε τον κώδικα ψάχνοντας για κάτι που μοιάζει να "
|
|
Packit |
1470ea |
"θέλει βελτίωση. Χωρίς αμφιβολία, θα κάνετε λάθος. Η χρήση ενός βοηθητικού "
|
|
Packit |
1470ea |
"προγράμματος profiler το οποίο δίνει μια λεπτομερή ανατομία του τι κάνει "
|
|
Packit |
1470ea |
"πραγματικό το πρόγραμμά σας είναι ο μόνος τρόπος για να είστε βέβαιοι."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/introduction.page:28
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Usually the problem is isolated to small sections of code. Pick the worst place "
|
|
Packit |
1470ea |
"and concentrate on that first. Once that is done, rerun the profiler and "
|
|
Packit |
1470ea |
"repeat. As you proceed the gains made at each step will get less and less, at "
|
|
Packit |
1470ea |
"some point you will have to decide that the results are good enough. If your "
|
|
Packit |
1470ea |
"efforts are only extracting 10% improvements then you are well past the point "
|
|
Packit |
1470ea |
"where you should have stopped."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Συνήθως το πρόβλημα εντοπίζεται σε μικρά τμήματα του κώδικα. Διαλέξτε το "
|
|
Packit |
1470ea |
"χειρότερο από αυτά και συγκεντρωθείτε πρώτα σ' αυτό. Όταν θα έχετε τελειώσει μ' "
|
|
Packit |
1470ea |
"αυτό, τρέξτε ξανά το profiler και επαναλάβετε τη διαδικασία. Καθώς θα "
|
|
Packit |
1470ea |
"προχωράτε, το κέρδος από κάθε βήμα θα μειώνεται, και σε κάποιο σημείο θα πρέπει "
|
|
Packit |
1470ea |
"να αποφασίσετε αν τα αποτελέσματα είναι αρκετά καλά. Αν η προσπάθειές σας έχουν "
|
|
Packit |
1470ea |
"ως αποτέλεσμα τη βελτίωση μόνο κατά 10% κάθε φορά, τότε έχετε περάσει το σημείο "
|
|
Packit |
1470ea |
"όπου μπορείτε πια να σταματήσετε."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/introduction.page:31
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Don't forget the big picture. For example, rather than just trying to speed up "
|
|
Packit |
1470ea |
"a piece of code, ask yourself if it needs to be run at all. Could it be "
|
|
Packit |
1470ea |
"combined with another piece of code? Can the results of previous calculations "
|
|
Packit |
1470ea |
"be saved and reused? It won't even need to be optimized if it is in a place "
|
|
Packit |
1470ea |
"where the user is never going to notice it. Worse still, the code may already "
|
|
Packit |
1470ea |
"be optimized and is doing the heavy calculations now to avoid doing them later. "
|
|
Packit |
1470ea |
"Code does not run in isolation and neither does the optimization process."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Μη συγκεντρωθείτε στο δέντρο και χάσετε το δάσος. Για παράδειγμα, αντί να "
|
|
Packit |
1470ea |
"προσπαθείτε να επιταχύνετε ένα κομμάτι κώδικα, σκεφτείτε αν χρειάζεται καν να "
|
|
Packit |
1470ea |
"τρέχει. Μήπως μπορεί να συνδυαστεί με κάποιο άλλο κομμάτι; Μήπως μπορούν τα "
|
|
Packit |
1470ea |
"αποτελέσματα της προηγούμενης λειτουργίας του να αποθηκευτούν και να "
|
|
Packit |
1470ea |
"χρησιμοποιηθούν ξανά; Δε θα χρειαστεί καν να βελτιστοποιηθεί αν βρίσκεται σε "
|
|
Packit |
1470ea |
"ένα μέρος όπου ο χρήστης δε θα το προσέξει ποτέ. Ακόμα χειρότερα, ο κώδικας "
|
|
Packit |
1470ea |
"μπορεί να είναι ήδη βελτιστοποιημένος και να κάνει τώρα τους βαριούς του "
|
|
Packit |
1470ea |
"υπολογισμούς για να μην τους χρειαστεί αργότερα. Ούτε ο κώδικας τρέχει "
|
|
Packit |
1470ea |
"απομονωμένος, ούτε η βελτιστοποίηση."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/introduction.page:37
|
|
Packit |
1470ea |
msgid "Hints"
|
|
Packit |
1470ea |
msgstr "Υποδείξεις"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/title
|
|
Packit |
1470ea |
#: C/introduction.page:41
|
|
Packit |
1470ea |
msgid "The Fundamentals"
|
|
Packit |
1470ea |
msgstr "Τα βασικά"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:44
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Re-run your benchmark after every change you make to the code and keep a log of "
|
|
Packit |
1470ea |
"everything you change and how it affects the benchmark. This lets you undo "
|
|
Packit |
1470ea |
"mistakes and also helps you not to repeat mistakes."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τρέξτε ξανά τις δοκιμαστικές σας μετρήσεις μετά από κάθε αλλαγή που κάνετε στον "
|
|
Packit |
1470ea |
"κώδικα και κρατήστε μια καταγραφή όλων των αλλαγών που κάνετε και πώς αυτές "
|
|
Packit |
1470ea |
"επηρεάζουν τις μετρήσεις. Αυτό σας βοηθά να αναιρείτε κάποια λάθη, όπως επίσης "
|
|
Packit |
1470ea |
"και να μην τα επαναλαμβάνετε."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:49
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Make sure your code is correct and bug-free before optimizing it. Check that it "
|
|
Packit |
1470ea |
"remains correct and bug-free after optimization."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Βεβαιωθείτε ότι ο κώδικάς σας είναι σωστός και χωρίς σφάλματα προτού τον "
|
|
Packit |
1470ea |
"βελτιστοποιήσετε. Ελέγξτε ότι είναι σωστός και χωρίς σφάλματα και μετά τη "
|
|
Packit |
1470ea |
"βελτιστοποίηση."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:54
|
|
Packit |
1470ea |
msgid "Optimize at the high level before optimizing the details."
|
|
Packit |
1470ea |
msgstr "Βελτιστοποιήστε σε ψηλό επίπεδο πριν προχωρήσετε στις λεπτομέρειες."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:59
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Use the right algorithm. The classic text-book example is using quick-sort "
|
|
Packit |
1470ea |
"instead of bubble-sort. There are many others, some save memory, some save CPU. "
|
|
Packit |
1470ea |
"Also, see what shortcuts you can make: you can do quicker than quick-sort if "
|
|
Packit |
1470ea |
"you are prepared to make some compromises."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Χρησιμοποιήστε το σωστό αλγόριθμο. Το κλασικό παράδειγμα είναι να "
|
|
Packit |
1470ea |
"χρησιμοποιήσετε το quick-sort αντί το bubble-sort. Υπάρχουν πολλά ακόμα, μερικά "
|
|
Packit |
1470ea |
"εξοικονομούν μνήμη, μερικά εξοικονομούν επεξεργαστή. Επίσης, δείτε τι συντόμια "
|
|
Packit |
1470ea |
"μπορείτε να ακολουθήσετε: μπορείτε να ταξινομήσετε και γρηγορότερα από το quick-"
|
|
Packit |
1470ea |
"sort αν μπορείτε να κάνετε μερικούς συμβιβασμούς."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:64
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Optimization is a trade-off. Caching results speeds up calculations, but "
|
|
Packit |
1470ea |
"increases memory use. Saving data to disk saves memory, but costs time when it "
|
|
Packit |
1470ea |
"is loaded back from disk."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η βελτιστοποίηση είναι και θέμα ισορροπίας. Η προσωρινή αποθήκευση "
|
|
Packit |
1470ea |
"αποτελεσμάτων επιταχύνει τους υπολογισμούς, αλλά κοστίζει σε μνήμη. Η "
|
|
Packit |
1470ea |
"αποθήκευση δεδομένων στο δίσκο εξοικονομεί τη μνήμη, αλλά κοστίζει σε χρόνο "
|
|
Packit |
1470ea |
"όταν θα πρέπει να διαβάσετε τις πληροφορίες από το δίσκο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:69
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Make sure you choose a wide variety of inputs to optimize against. If you don't "
|
|
Packit |
1470ea |
"it is easy to end up with a piece of code carefully optimized for one file and "
|
|
Packit |
1470ea |
"no others."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Βεβαιωθείτε ότι χρησιμοποιείτε μια πλατιά ποικιλία από εισόδους για τις οποίες "
|
|
Packit |
1470ea |
"θα βελτιστοποιήσετε. Αν δεν το κάνετε αυτό, εύκολα θα καταλήξετε σε ένα κομμάτι "
|
|
Packit |
1470ea |
"κώδικα προσεκτικά βελτιστοποιημένο για συγκεκριμένη λειτουργία αλλά όχι για "
|
|
Packit |
1470ea |
"άλλες."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:74
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Avoid expensive operations: Multiple small disk reads. Using up lots of memory "
|
|
Packit |
1470ea |
"so disk swapping becomes necessary. Avoid anything that writes or reads from "
|
|
Packit |
1470ea |
"the hard disk unnecessarily. The network is slow too. Also avoid graphics "
|
|
Packit |
1470ea |
"operations that need a response from the X server."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Αποφύγετε τις σπάταλες λειτουργίες: Πολλαπλές μικρές αναγνώσεις από το δίσκο. Η "
|
|
Packit |
1470ea |
"χρήση πάρα πολλής μνήμης ώστε να χρειάζεται εικονική μνήμη στο δίσκο γίνεται "
|
|
Packit |
1470ea |
"απαραίτητη. Αποφύγετε ο,τιδήποτε γράφει ή διαβάζει από τον από τον σκληρό δίσκο "
|
|
Packit |
1470ea |
"άσκοπα. Το δίκτυο επίσης είναι αργό. Αποφύγετε επίσης λειτουργίες γραφικών οι "
|
|
Packit |
1470ea |
"οποίες χρειάζονται απάντηση από τον εξυπηρετητή X."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/title
|
|
Packit |
1470ea |
#: C/introduction.page:81
|
|
Packit |
1470ea |
msgid "Traps for the Unwary"
|
|
Packit |
1470ea |
msgstr "Παγίδες για τους ανυποψίαστους"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:84
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Beware of side effects. There can often be strange interactions between "
|
|
Packit |
1470ea |
"different sections of code, a speed-up in one part can slow another part down."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Προσέχετε τις παρενέργειες. Συχνά μπορεί να υπάρχουν περίεργες αλληλεπιδράσεις "
|
|
Packit |
1470ea |
"μεταξύ διαφορετικών κομματιών κώδικα, και η επιτάχυνση ενός κομματιού μπορεί να "
|
|
Packit |
1470ea |
"επιβραδύνει ένα άλλο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:89
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"When timing code, even on a quiet system, events outside the program add noise "
|
|
Packit |
1470ea |
"to the timing results. Average over multiple runs. If the code is very short, "
|
|
Packit |
1470ea |
"timer resolution is also a problem. In this case measure the time the computer "
|
|
Packit |
1470ea |
"takes to run the code 100 or 1000 times. If the times you are recording are "
|
|
Packit |
1470ea |
"longer than a few seconds, you should be OK."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Όταν χρονομετράτε τον κώδικα, ακόμα και σε ένα ήσυχο σύστημα, γεγονότα εκτός "
|
|
Packit |
1470ea |
"από το πρόγραμμα προσθέτουν θόρυβο στα αποτελέσματα των μετρήσεων. Τρέξτε "
|
|
Packit |
1470ea |
"πολλές φορές το πρόγραμμα και πάρτε το μέσο όρο. Αν ο κώδικας είναι πολύ "
|
|
Packit |
1470ea |
"σύντομος, η ανάλυση του χρονομέτρου είναι επίσης προβληματική. Σε τέτοια "
|
|
Packit |
1470ea |
"περίπτωση, χρονομετρήστε την εκτέλεση του κώδικα για 100 ή 1000 φορές. Αν οι "
|
|
Packit |
1470ea |
"φορές που χρονομετράτε διαρκούν περισσότερο από μερικά δευτερόλεπτα, τότε θα "
|
|
Packit |
1470ea |
"πρέπει να είστε εντάξει."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:94
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"It is very easy to be misled by the profiler. There are stories of people "
|
|
Packit |
1470ea |
"optimizing the operating system idle-loop because that is where it spent all "
|
|
Packit |
1470ea |
"its time! Don't optimize code that does nothing the user cares about."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Είναι πάρα πολύ εύκολο να σας παραπλανήσει ο profiler. Υπάρχουν περιπτώσεις "
|
|
Packit |
1470ea |
"ανθρώπων που βελτιστοποιούσαν τον βρόχο παύσης του λειτουργικού συστήματος "
|
|
Packit |
1470ea |
"επειδή εκεί τους έδειχνε ο profiler ότι ρο σύστημα σπαταλούσε τον περισσότερο "
|
|
Packit |
1470ea |
"χρόνο του! Μη βελτιστοποιείτε κώδικα που δεν κάνει τίποτα χρήσιμο για το χρήστη."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:99
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Remember the resources on the X server. Your program's memory usage doesn't "
|
|
Packit |
1470ea |
"include the pixmaps that are stored in the X server's process, but they are "
|
|
Packit |
1470ea |
"still using up memory. Use xrestop to see what resources your program is using."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Να θυμάστε τους πόρους του εξυπηρετητή X. Η χρήση μνήμης του προγράμματός σας "
|
|
Packit |
1470ea |
"δεν περιλαμβάνει τα pixmap που αποθηκεύονται στις διεργασίες του εξυπηρετητή X, "
|
|
Packit |
1470ea |
"αλλά και πάλι χρησιμοποιούν μνήμη. Χρησιμοποιήστε το xrestop για να δείτε ποιοι "
|
|
Packit |
1470ea |
"πόροι χρησιμοποιούνται από το πρόγραμμά σας."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/title
|
|
Packit |
1470ea |
#: C/introduction.page:106
|
|
Packit |
1470ea |
msgid "Low Level Hints"
|
|
Packit |
1470ea |
msgstr "Υποδείξεις χαμηλού επιπέδου"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:109
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"When optimizing memory use, be wary of the difference between peak usage and "
|
|
Packit |
1470ea |
"average memory usage. Some memory is almost always allocated, this is usually "
|
|
Packit |
1470ea |
"bad. Some is only briefly allocated, this may be quite acceptable. Tools like "
|
|
Packit |
1470ea |
"massif use the concept of space-time, the product of memory used and the "
|
|
Packit |
1470ea |
"duration it was allocated for, instead."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Όταν βελτιστοποιείτε τη χρήση της μνήμης, προσέξτε τη διαφορά ανάμεσα στη "
|
|
Packit |
1470ea |
"μέγιστη χρήση και στη μέση χρήση. Σχεδόν πάντα κατανέμεται κάποια ποσότητα "
|
|
Packit |
1470ea |
"μνήμης για χρήση από το πρόγραμμα, το οποίο είναι συνήθως κακό. Κάποια μνήμη "
|
|
Packit |
1470ea |
"είναι μόνο κατανεμημένη για λίγο, και αυτό μπορεί να είναι αποδεκτό. Εργαλεία "
|
|
Packit |
1470ea |
"όπως το massif χρησιμοποιούν την έννοια του χωροχρόνου, το γινόμενο της "
|
|
Packit |
1470ea |
"ποσότητας της μνήμης που χρησιμοποιείται και της διάρκειας κατά την οποία ήταν "
|
|
Packit |
1470ea |
"κατανεμημένη."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:114
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Time simplified bits of code that do only the things you know are essential, "
|
|
Packit |
1470ea |
"this gives an absolute lower limit on the time your code will take. For "
|
|
Packit |
1470ea |
"example, when optimizing a loop time the empty loop. If that is still too long "
|
|
Packit |
1470ea |
"no amount of micro-optimization will help and you will have to change your "
|
|
Packit |
1470ea |
"design. Make sure the compiler doesn't optimize away your empty loop."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τα απλοποιημένα κομμάτια κώδικα που κάνουν μόνο πράγματα που ξέρετε είναι "
|
|
Packit |
1470ea |
"ουσιώδη, γιατί σας δίνουν το απόλυτα χαμηλότερο όριο για το χρόνο που "
|
|
Packit |
1470ea |
"χρειάζεται ο κώδικάς σας. Για παράδειγμα, όταν βελτιστοποιείτε ένα βρόχο, "
|
|
Packit |
1470ea |
"χρονομετρήστε τον ενώ είναι άδειος. Αν αυτός ο χρόνος είναι πολύ μεγάλος, τότε "
|
|
Packit |
1470ea |
"δε θα σας βοηθήσει καθόλου η μικροβελτιστοποίηση, και θα πρέπει να αλλάξετε το "
|
|
Packit |
1470ea |
"σχεδιασμό σας. Βεβαιωθείτε ότι ο μεταγλωττιστής δε βελτιστοποιεί τον άδειο "
|
|
Packit |
1470ea |
"βρόχο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:119
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Move code out from inside loops. A slightly more complicated piece of code that "
|
|
Packit |
1470ea |
"is executed once is far quicker than a simple piece of code executed a thousand "
|
|
Packit |
1470ea |
"times. Avoid calling slow code often."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Αφαιρέστε κώδικα από εσωτερικούς βρόχους. Ένα λίγο πιο πολύπλοκο κομμάτι κώδικα "
|
|
Packit |
1470ea |
"που εκτελείται μια φορά είναι πολύ γρηγορότερο από ένα απλούστερο κομμάτι "
|
|
Packit |
1470ea |
"κώδικα που εκτελείται χίλιες φορές. Αποφύγετε να καλείτε συχνά αργό κώδικα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:124
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Give the compiler as many hints as possible. Use the const keyword. Use "
|
|
Packit |
1470ea |
"G_INLINE_FUNC for short, frequently called, functions. Look up "
|
|
Packit |
1470ea |
"G_GNUC_PURE , G_LIKELY and the other glib "
|
|
Packit |
1470ea |
"miscellaneous macros. Use the macros instead of gcc-specific keywords to ensure "
|
|
Packit |
1470ea |
"portability."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Δώστε στον μεταγλωττιστή όσες περισσότερες υποδείξεις μπορείτε. Χρησιμοποιήστε "
|
|
Packit |
1470ea |
"τη λέξη κλειδί const. Χρησιμοποιήστε τον G_INLINE_FUNC για "
|
|
Packit |
1470ea |
"συντομία, συναρτήσεων που καλούνται συχνά. Ψάξτε για τις μακροεντολές "
|
|
Packit |
1470ea |
"G_GNUC_PURE , G_LIKELY , και διάφορες άλλες της glib. "
|
|
Packit |
1470ea |
"Χρησιμοποιήστε τις μακροεντολές αντί για ειδικές λέξεις κλειδιά του gcc, για να "
|
|
Packit |
1470ea |
"εξασφαλίσετε τη φορητότητα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:129
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Don't use assembly language. It is not portable and, while it may be fast on "
|
|
Packit |
1470ea |
"one processor, it is not even guaranteed to be fast on every processor that "
|
|
Packit |
1470ea |
"supports that architecture (e.g. Athlon vs. Pentium 4)."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Μη χρησιμοποιείτε τη γλώσσα assembly. Δεν είναι φορητή και ενώ μπορεί να είναι "
|
|
Packit |
1470ea |
"γρήγορη σε έναν επεξεργαστή, δεν είναι εγγυημένο ότι θα είναι γρήγορη και σε "
|
|
Packit |
1470ea |
"οποιοδήποτε άλλο επεξεργαστή που υποστηρίζει αυτήν την αρχιτεκτονική (π.χ. "
|
|
Packit |
1470ea |
"Athlon vs Pentium 4)."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:134
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Don't rewrite an existing library routine unless you are sure it is "
|
|
Packit |
1470ea |
"unnecessarily slow. Many CPU-intensive library routines have already been "
|
|
Packit |
1470ea |
"optimized. Conversely, some library routines are slow, especially ones that "
|
|
Packit |
1470ea |
"make system calls to the operating system."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Μη ξαναγράψετε μια υφιστάμενη βιβλιοθήκη εκτός και αν είστε βέβαιοι ότι είναι "
|
|
Packit |
1470ea |
"αδικαιολόγητα αργή. Πολλές βιβλιοθήκες που καταπονούν τον επεξεργαστή είναι ήδη "
|
|
Packit |
1470ea |
"βελτιστοποιημένες. Αντίστοιχα, μερικές ρουτίνες βιβλιοθηκών είναι αργές, ειδικά "
|
|
Packit |
1470ea |
"μερικές που κάνουν πολλές κλήσεις συστήματος στο λειτουργικό σύστημα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:139
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Minimize the number of libraries you link to. The fewer libraries to link in, "
|
|
Packit |
1470ea |
"the faster the program starts. This is a difficult thing to do with GNOME."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Ελαχιστοποιήστε τον αριθμό των βιβλιοθηκών με τις οποίες συνδέεστε. Με όσο "
|
|
Packit |
1470ea |
"λιγότερες βιβλιοθήκες συνδέεται ένα πρόγραμμα, τόσο γρηγορότερα ξεκινά. Αυτό "
|
|
Packit |
1470ea |
"είναι κάτι δύσκολο να γίνει στο GNOME."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/title
|
|
Packit |
1470ea |
#: C/introduction.page:146
|
|
Packit |
1470ea |
msgid "High Level Tricks"
|
|
Packit |
1470ea |
msgstr "Κόλπα υψηλού επιπέδου"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:149
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Take advantage of concurrency. This doesn't just mean using multiple "
|
|
Packit |
1470ea |
"processors, it also means taking advantage of the time the user spends thinking "
|
|
Packit |
1470ea |
"about what they are going to do next to perform some calculations in "
|
|
Packit |
1470ea |
"anticipation. Do calculations while waiting for data to be loaded off disk. "
|
|
Packit |
1470ea |
"Take advantage of multiple resources, use them all at once."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Εκμεταλλευτείτε το συγχρονισμό. Αυτό δε σημαίνει μόνο να χρησιμοποιείτε "
|
|
Packit |
1470ea |
"πολλαπλούς επεξεργαστές, αλλά και να εκμεταλλεύεστε το χρόνο που ο χρήστης "
|
|
Packit |
1470ea |
"σπαταλά να σκέφτεται τι θα κάνει στη συνέχεια, για να κάνετε μερικούς "
|
|
Packit |
1470ea |
"υπολογισμούς που χρειάζεστε. Κάντε υπολογισμούς ενώ περιμένετε για πληροφορίες "
|
|
Packit |
1470ea |
"να φορτωθούν από το δίσκο. Εκμεταλλευτείτε πολλαπλούς πόρους, χρησιμοποιώντας "
|
|
Packit |
1470ea |
"τους ταυτόχρονα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:154
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Cheat. The user only has to think that the computer is fast, it doesn't matter "
|
|
Packit |
1470ea |
"whether it actually is or not. It is the time between the command and the "
|
|
Packit |
1470ea |
"answer that is important, it doesn't matter if the response is pre-calculated, "
|
|
Packit |
1470ea |
"cached, or will in fact be worked out later at a more convenient time, as long "
|
|
Packit |
1470ea |
"as the user gets what they expect."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Ξεγελάστε. Ο χρήστης χρειάζεται μόνο να νομίζει ότι ο υπολογιστής είναι "
|
|
Packit |
1470ea |
"γρήγορος, άσχετα αν πραγματικά είναι. Σημασία έχει ο χρόνος μεταξύ της εντολής "
|
|
Packit |
1470ea |
"και της απάντησης, και όχι αν η απάντηση υπολογίστηκε από πριν, ή ήταν "
|
|
Packit |
1470ea |
"προσωρινά αποθηκευμένη, ή ακόμα και αν θα υπολογιστεί αργότερα σε κάποιο πιο "
|
|
Packit |
1470ea |
"βολικό χρόνο, φτάνει ο χρήστης να πάρει αυτό που περιμένει."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:159
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Do things in the idle loop. It is easier to program than using full multi-"
|
|
Packit |
1470ea |
"threading but still gets things done out of the users eye. Be careful though, "
|
|
Packit |
1470ea |
"if you spend too long in the idle loop your program will become sluggish. So "
|
|
Packit |
1470ea |
"regularly give control back to the main loop."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Κάντε πράγματα στον ανενεργό βρόχο. Είναι ευκολότερο στον προγραμματισμό από τη "
|
|
Packit |
1470ea |
"χρήση πολυνηματικότητας, αλλά και πάλι επιτυγχάνει να κάνει πράγματα χωρίς να "
|
|
Packit |
1470ea |
"το αντιλαμβάνεται ο χρήστης. Να είστε όμως προσεκτικοί, γιατί αν σπαταλάτε πολύ "
|
|
Packit |
1470ea |
"χρόνο στον ανενεργό βρόχο τότε το πρόγραμμά σας γίνεται αργό. Οπότε να δίνεται "
|
|
Packit |
1470ea |
"τακτικά τον έλεγχο στον κύριο βρόχο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: item/p
|
|
Packit |
1470ea |
#: C/introduction.page:164
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"If all else fails, tell the user that the code is going to be slow and put up a "
|
|
Packit |
1470ea |
"progress bar. They won't be as happy as if you had just presented the results, "
|
|
Packit |
1470ea |
"but they will at least know the program hasn't crashed and they can go get a "
|
|
Packit |
1470ea |
"cup of coffee."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Αν όλα τα υπόλοιπα αποτύχουν, πείτε στο χρήστη ότι ο κώδικας είναι αργός και "
|
|
Packit |
1470ea |
"βάλτε μια μπάρα προόδου. Δε θα είναι τόσο ευχαριστημένος όσο θα ήταν αν του "
|
|
Packit |
1470ea |
"δίνατε άμεσα αποτελέσματα, αλλά τουλάχιστον θα ξέρουν ότι το πρόγραμμα δεν "
|
|
Packit |
1470ea |
"κόλλησε και ότι μπορούν να σηκωθούν και να φτιάξουν ένα καφεδάκι."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: media
|
|
Packit |
1470ea |
#. This is a reference to an external file such as an image or video. When
|
|
Packit |
1470ea |
#. the file changes, the md5 hash will change to let you know you need to
|
|
Packit |
1470ea |
#. update your localized copy. The msgstr is not used at all. Set it to
|
|
Packit |
1470ea |
#. whatever you like once you have updated your copy of the file.
|
|
Packit |
1470ea |
#: C/massif.page:50
|
|
Packit |
1470ea |
msgctxt "_"
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"external ref='figures/massif-before.png' md5='1a6b2ace548e6789ab8bfacb3727b345'"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"external ref='figures/massif-before.png' md5='1a6b2ace548e6789ab8bfacb3727b345'"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: media
|
|
Packit |
1470ea |
#. This is a reference to an external file such as an image or video. When
|
|
Packit |
1470ea |
#. the file changes, the md5 hash will change to let you know you need to
|
|
Packit |
1470ea |
#. update your localized copy. The msgstr is not used at all. Set it to
|
|
Packit |
1470ea |
#. whatever you like once you have updated your copy of the file.
|
|
Packit |
1470ea |
#: C/massif.page:124
|
|
Packit |
1470ea |
msgctxt "_"
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"external ref='figures/massif-after.png' md5='36d1b4ad7ab49b28b69ad3eabbaa7069'"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"external ref='figures/massif-after.png' md5='36d1b4ad7ab49b28b69ad3eabbaa7069'"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: page/title
|
|
Packit |
1470ea |
#: C/massif.page:7
|
|
Packit |
1470ea |
msgid "Using <app>Massif</app> for Profiling Memory Use in GNOME Software"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Χρησιμοποιήστε το <app>Massif</app> για την χρήσης της μνήμης κατατομής σε "
|
|
Packit |
1470ea |
"εφαρμογές του GNOME"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:13
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"<app>Massif</app> is a member of the
|
|
Packit |
1470ea |
"\">valgrind</link> suite of memory-profiling tools. Its purpose is to give a "
|
|
Packit |
1470ea |
"detailed view of dynamic memory usage during the lifetime of the program. "
|
|
Packit |
1470ea |
"Specifically it records the memory use of the heap and the stack."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η <app>Massif</app> είναι μέλος της σειράς
|
|
Packit |
1470ea |
"\">valgrind</link> για εργαλεία κατατομής μνήμης. Ο σκοπός του είναι να δίνει "
|
|
Packit |
1470ea |
"μια λεπτομερή προβολή της δυναμικής χρήσης της μνήμης κατά τη διάρκεια του "
|
|
Packit |
1470ea |
"χρόνου ζωής ενός προγράμματος. Συγκεκριμένα, καταγράφει τη χρήση της μνήμης από "
|
|
Packit |
1470ea |
"το σωρό και τη στοίβα."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:16
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The heap is the region of memory which is allocated with functions like malloc. "
|
|
Packit |
1470ea |
"It grows on demand and is usually the largest region of memory in a program. "
|
|
Packit |
1470ea |
"The stack is where all the local data for functions is stored. This includes "
|
|
Packit |
1470ea |
"the \"automatic\" variables in C and the return address for subroutines. The "
|
|
Packit |
1470ea |
"stack is typically a lot smaller and a lot more active than the heap. We won't "
|
|
Packit |
1470ea |
"consider the stack explicitly since <app>Massif</app> treats it as though it "
|
|
Packit |
1470ea |
"were just another part of the heap. <app>Massif</app> also gives information "
|
|
Packit |
1470ea |
"about how much memory is used to manage the heap."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Ο σωρός είναι η περιοχή στη μνήμη η οποία κατανέμεται με συναρτήσεις όπως η "
|
|
Packit |
1470ea |
"malloc. Μεγαλώνει κατά απαίτηση και είναι συνήθως η μεγαλύτερη περιοχή της "
|
|
Packit |
1470ea |
"μνήμης σε ένα πρόγραμμα. Η στοίβα είναι εκεί όπου αποθηκεύονται όλα τα τοπικά "
|
|
Packit |
1470ea |
"δεδομένα για τις συναρτήσεις. Αυτό συμπεριλαμβάνει τις \"αυτόματες\" μεταβλητές "
|
|
Packit |
1470ea |
"στη C και τη διεύθυνση επιστροφής για τις υπορουτίνες. Η στοίβα είναι τυπικά "
|
|
Packit |
1470ea |
"πολύ μικρότερη και πολύ πιο ενεργή από το σωρό. Δε θα ασχοληθούμε ειδικά με τη "
|
|
Packit |
1470ea |
"στοίβα μια που το <app>Massif</app> την αντιμετωπίζει σαν να ήταν μέρος του "
|
|
Packit |
1470ea |
"σωρού. Το <app>Massif</app> παρέχει επίσης πληροφορίες για την ποσότητα της "
|
|
Packit |
1470ea |
"μνήμης που χρησιμοποιείται για τη διαχείριση του σωρού."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:18
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"<app>Massif</app> produces two output files: a graphical overview in a "
|
|
Packit |
1470ea |
"postscript file and a detailed breakdown in a text file."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η <app>Massif</app> παράγει δύο αρχεία εξόδου: μια γραφική επισκόπηση σε ένα "
|
|
Packit |
1470ea |
"αρχείο postscript και μια λεπτομερή ανάλυση σε ένα αρχείο κειμένου."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/massif.page:23
|
|
Packit |
1470ea |
msgid "Using <app>Massif</app> with GNOME"
|
|
Packit |
1470ea |
msgstr "Χρήση της <app>Massif</app> με το GNOME"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:24
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"<app>Massif</app> has very few options and for many programs does not need "
|
|
Packit |
1470ea |
"them. However for GNOME applications, where memory allocation might be buried "
|
|
Packit |
1470ea |
"deep in either glib or GTK, the number of levels down the call-stack Massif "
|
|
Packit |
1470ea |
"descends needs to be increased. This is achieved using the --depth parameter. "
|
|
Packit |
1470ea |
"By default this is 3; increasing it to 5 will guarantee the call-stack reaches "
|
|
Packit |
1470ea |
"down to your code. One or two more levels may also be desirable to provide your "
|
|
Packit |
1470ea |
"code with some context. Since the level of detail becomes quickly overwhelming "
|
|
Packit |
1470ea |
"it is best to start with the smaller depth parameter and only increase it when "
|
|
Packit |
1470ea |
"it becomes apparent that it isn't sufficient."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η <app>Massif</app> έχει πολύ λίγες επιλογές και για τα περισσότερα προγράμματα "
|
|
Packit |
1470ea |
"δεν τις χρειάζεστε. Εντούτοις για της εφαρμογές του GNOME, όπου η κατανομή "
|
|
Packit |
1470ea |
"μνήμης μπορεί να θαφτεί βαθιά στο glib ή στο GTK, ο αριθμός επιπέδων κάτω από "
|
|
Packit |
1470ea |
"την στοίβα κλήσεων που η Massif κατεβαίνει θα πρέπει να αυξηθεί. Αυτό είναι "
|
|
Packit |
1470ea |
"γίνεται χρησιμοποιώντας την παράμετρο --depth. Εξ ορισμού αυτό είναι ίσο με 3· "
|
|
Packit |
1470ea |
"αυξάνοντας το σε 5 εγγυάται ότι η στοίβα κλήσεων θα φθάσει στον κώδικά σας. Ένα "
|
|
Packit |
1470ea |
"ή δύο περισσότερα επίπεδα μπορούν επίσης να είναι επιθυμητά και να παρέχουν "
|
|
Packit |
1470ea |
"στον κώδικά σας κάποιο πλαίσιο εφαρμογής. Δεδομένου ότι το επίπεδο λεπτομέρειας "
|
|
Packit |
1470ea |
"γίνεται γρήγορα συντριπτικό είναι καλύτερο να αρχίσει με μικρότερη παράμετρο "
|
|
Packit |
1470ea |
"βάθους και να το αυξήστε μόνο όταν γίνεται προφανές ότι αυτό δεν είναι "
|
|
Packit |
1470ea |
"ικανοποιητικό."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:27
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"It is also useful to tell <app>Massif</app> which functions allocate memory in "
|
|
Packit |
1470ea |
"glib. It removes an unnecessary layer of function calls from the reports and "
|
|
Packit |
1470ea |
"gives you a clearer idea of what code is allocating memory. The allocating "
|
|
Packit |
1470ea |
"functions in glib are g_malloc, g_malloc0, g_realloc, g_try_malloc, and "
|
|
Packit |
1470ea |
"g_mem_chunk_alloc. You use the --alloc-fn option to tell Massif about them."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Είναι επίσης χρήσιμο να πείτε στο <app>Massif</app> ποιες συναρτήσεις δεσμεύουν "
|
|
Packit |
1470ea |
"χώρο στη μνήμη μέσω του glib. Αφαιρεί ένα περιττό στρώμα κλήσεων συναρτήσεων "
|
|
Packit |
1470ea |
"από τις αναφορές και σας δίνει μια σαφέστερη ιδέα ποιος κώδικας δεσμεύει χώρο "
|
|
Packit |
1470ea |
"στην μνήμη. Οι συναρτήσεις δέσμευσης χώρου μνήμης μέσω του glib είναι οι "
|
|
Packit |
1470ea |
"g_malloc, g_malloc0, g_realloc, g_try_malloc, και g_mem_chunk_alloc. "
|
|
Packit |
1470ea |
"Χρησιμοποιήστε την επιλογή --alloc-fn για να ενημερώστε το Masiff για αυτές."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:30
|
|
Packit |
1470ea |
msgid "Your command-line should therefore look something like:"
|
|
Packit |
1470ea |
msgstr "Η γραμμή-εντολών σας πρέπει επομένως να μοιάζει κάπως σαν:"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/code
|
|
Packit |
1470ea |
#: C/massif.page:33
|
|
Packit |
1470ea |
#, no-wrap
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"valgrind --tool=massif --depth=5 --alloc-fn=g_malloc --alloc-fn=g_realloc --alloc-fn=g_try_malloc \\\n"
|
|
Packit |
1470ea |
" --alloc-fn=g_malloc0 --alloc-fn=g_mem_chunk_alloc swell-foop\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"valgrind --tool=massif --depth=5 --alloc-fn=g_malloc --alloc-fn=g_realloc --alloc-fn=g_try_malloc \\\n"
|
|
Packit |
1470ea |
" --alloc-fn=g_malloc0 --alloc-fn=g_mem_chunk_alloc swell-foop\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:37
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"<app>Swell Foop</app> is the program we will be using as an example. Be warned "
|
|
Packit |
1470ea |
"that, since valgrind emulates the CPU, it will run very slowly. You "
|
|
Packit |
1470ea |
"will also need a lot of memory."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Το <app>Swell Foop</app> είναι το πρόγραμμα που θα χρησιμοποιούμε σαν "
|
|
Packit |
1470ea |
"παράδειγμα. Σας προειδοποιούμε ότι, από την στιγμή που ο valgrind θα εξομοιώνει "
|
|
Packit |
1470ea |
"την ΚΜΕ, θα λειτουργεί πολύ αργά. Θα χρειαστείτε επίσης πολλή μνήμη."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/massif.page:41
|
|
Packit |
1470ea |
msgid "Interpreting the Results"
|
|
Packit |
1470ea |
msgstr "Ερμηνεία των αποτελεσμάτων"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:42
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The graphical output of <app>Massif</app> is largely self explanatory. Each "
|
|
Packit |
1470ea |
"band represents the memory allocated by one function over time. Once you "
|
|
Packit |
1470ea |
"identify which bands are using the most memory, usually the big thick ones at "
|
|
Packit |
1470ea |
"the top you will have to consult the text file for the details."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η γραφική έξοδος δεδομένων του <app>Massif</app> είναι κατά ένα μεγάλο μέρος "
|
|
Packit |
1470ea |
"αυτοεπεξηγηματικός. Κάθε ζώνη αντιπροσωπεύει τη μνήμη που διατίθεται από μια "
|
|
Packit |
1470ea |
"λειτουργία σε σχέση με τον χρόνο. Μόλις προσδιορίσετε ποιες ζώνες χρησιμοποιούν "
|
|
Packit |
1470ea |
"την περισσότερη μνήμη, συνήθως οι μεγάλες παχιές ζώνες στην κορυφή, θα πρέπει "
|
|
Packit |
1470ea |
"να συμβουλευθείτε το αντίστοιχο αρχείο κειμένου για περισσότερες λεπτομέρειες."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:45
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The text file is arranged as a hierarchy of sections, at the top is a list of "
|
|
Packit |
1470ea |
"the worst memory users arranged in order of decreasing spacetime. Below this "
|
|
Packit |
1470ea |
"are further sections, each breaking the results down into finer detail as you "
|
|
Packit |
1470ea |
"proceed down the call-stack. To illustrate this we will use the output of the "
|
|
Packit |
1470ea |
"command above."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τα αρχεία κειμένων τακτοποιούνται ιεραρχικά βάση των τμημάτων, στην κορυφή "
|
|
Packit |
1470ea |
"είναι μία λίστα των χειρότερων χρηστών μνήμης που τακτοποιούνται κατά σειρά "
|
|
Packit |
1470ea |
"βάση την μείωση του χωροχρόνου. Κάτω από αυτά είναι και άλλα τμήματα, κάθε ένα "
|
|
Packit |
1470ea |
"διαιρεί τα αποτελέσματα σε μικρότερες λεπτομέρειες καθώς προχωράτε προς τη "
|
|
Packit |
1470ea |
"στοίβα κλήσεων. Για να επεξηγήσουμε αυτό θα χρησιμοποιήσουμε την έξοδος "
|
|
Packit |
1470ea |
"δεδομένων της εντολής παραπάνω."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: figure/title
|
|
Packit |
1470ea |
#: C/massif.page:49
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"<app>Massif</app> output for the unoptimized version of the <app>Swell Foop</"
|
|
Packit |
1470ea |
"app> program."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Έξοδος δεδομένων του <app>Massif</app> για την μη-βελτιστοποιημένη έκδοση του "
|
|
Packit |
1470ea |
"προγράμματος <app>Swell Foop</app>."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:52
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The image above shows a typical postscript output from <app>Massif</app>. This "
|
|
Packit |
1470ea |
"is the result you would get from playing a single game of <app>Swell Foop</app> "
|
|
Packit |
1470ea |
"(version 2.8.0) and then quitting. The postscript file will have a name like "
|
|
Packit |
1470ea |
"<file>massif.12345.ps</file> and the text file will be called "
|
|
Packit |
1470ea |
"<file>massif.12345.txt</file>. The number in the middle is the process ID of "
|
|
Packit |
1470ea |
"the program that was examined. If you actually try this example you will find "
|
|
Packit |
1470ea |
"two versions of each file, with slightly different numbers, this is because "
|
|
Packit |
1470ea |
"<app>Swell Foop</app> starts a second process and <app>Massif</app> follows "
|
|
Packit |
1470ea |
"that too. We will ignore this second process, it consumes very little memory."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η εικόνα παραπάνω παρουσιάζει μία χαρακτηριστική έξοδο δεδομένων σε μορφή "
|
|
Packit |
1470ea |
"postscript από το <app>Massif</app>. Αυτό είναι το αποτέλεσμα που θα παίρνατε "
|
|
Packit |
1470ea |
"παίζοντας μία πίστα από το παιχνίδι <app>Swell Foop</app> (έκδοση 2.8.0) και "
|
|
Packit |
1470ea |
"έπειτα το κλείνατε. Το αρχείο postscript θα έχει ένα όνομα όπως "
|
|
Packit |
1470ea |
"<file>massif.12345.ps</file> και το αρχείο κειμένων θα ονομάζεται "
|
|
Packit |
1470ea |
"<file>massif.12345.txt</file>. Ο αριθμός στη μέση είναι η ταυτότητα διαδικασίας "
|
|
Packit |
1470ea |
"του προγράμματος που εξετάστηκε. Εάν δοκιμάσετε πραγματικά αυτό το παράδειγμα "
|
|
Packit |
1470ea |
"θα βρείτε δύο εκδόσεις κάθε αρχείου, με ελαφρά διαφορετικούς νούμερα, αυτό "
|
|
Packit |
1470ea |
"συμβαίνει γιατί το <app>Swell Foop</app> ξεκινά μια δεύτερη διαδικασία και το "
|
|
Packit |
1470ea |
"<app>Massif</app> ακολουθεί και αυτή επίσης. Θα αγνοήσουμε αυτήν την δεύτερη "
|
|
Packit |
1470ea |
"διαδικασία, μια που καταναλώνει πολύ λίγη μνήμη."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:66
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"At the top of the graph we see a large yellow band labelled gdk_pixbuf_new. "
|
|
Packit |
1470ea |
"This seems like an ideal candidate for optimization, but we will need to use "
|
|
Packit |
1470ea |
"the text file to find out what is calling gdk_pixbuf_new. The top of the text "
|
|
Packit |
1470ea |
"file will look something like this:"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Στην κορυφή της γραφικής παράστασης βλέπουμε μια μεγάλη κίτρινη ζώνη με τίτλο "
|
|
Packit |
1470ea |
"gdk_pixbuf_new. Αυτό φαίνεται ως ένας ιδανικός υποψήφιος για βελτιστοποίηση, "
|
|
Packit |
1470ea |
"αλλά θα πρέπει να χρησιμοποιήσουμε το αρχείο κειμένων για να ανακαλύψουμε τι "
|
|
Packit |
1470ea |
"καλεί το gdk_pixbuf_new. Στην κορυφή του αρχείου κειμένων θα εμφανίζεται κάτι "
|
|
Packit |
1470ea |
"σαν το επόμενο:"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/code
|
|
Packit |
1470ea |
#: C/massif.page:69
|
|
Packit |
1470ea |
#, no-wrap
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Command: ./swell-foop\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 0 ===========================\n"
|
|
Packit |
1470ea |
"Heap allocation functions accounted for 90.4% of measured spacetime\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Called from:\n"
|
|
Packit |
1470ea |
" 28.8% : 0x6BF83A: gdk_pixbuf_new (in /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 6.1% : 0x5A32A5: g_strdup (in /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 5.9% : 0x510B3C: (within /usr/lib/libfreetype.so.6.3.7)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 3.5% : 0x2A4A6B: __gconv_open (in /lib/tls/libc-2.3.3.so)\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Εντολή: ./swell-foop\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 0 ===========================\n"
|
|
Packit |
1470ea |
"Συναρτήσεις κατανομής σωρών που καταμετρήθηκαν ως το 90.4% από το μετρήσιμο χωρόχρoνο\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Καλείται από:\n"
|
|
Packit |
1470ea |
" 28.8% : 0x6BF83A: gdk_pixbuf_new (in /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 6.1% : 0x5A32A5: g_strdup (στο /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 5.9% : 0x510B3C: (μέσα στο /usr/lib/libfreetype.so.6.3.7)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 3.5% : 0x2A4A6B: __gconv_open (στο /lib/tls/libc-2.3.3.so)\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:84
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The line with the '=' signs indicates how far down the stack trace we are, in "
|
|
Packit |
1470ea |
"this case we are at the top. After this it lists the heaviest users of memory "
|
|
Packit |
1470ea |
"in order of decreasing spacetime. Spacetime is the product of the amount of "
|
|
Packit |
1470ea |
"memory used and how long it was used for. It corresponds to the area of the "
|
|
Packit |
1470ea |
"bands in the graph. This part of the file tells us what we already know: most "
|
|
Packit |
1470ea |
"of the spacetime is dedicated to gdk_pixbuf_new. To find out what called "
|
|
Packit |
1470ea |
"gdk_pixbuf_new we need to search further down the text file:"
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η γραμμή με το σύμβολο του '=' δείχνει πόσο βαθιά κάτω είμαστε στο ίχνος "
|
|
Packit |
1470ea |
"στοίβας, σε αυτήν την περίπτωση είμαστε στην κορυφή. Μετά από αυτό απαριθμεί "
|
|
Packit |
1470ea |
"τους βαρύτερους χρήστες της μνήμης έτσι ώστε να μειωθεί ο χωρόχρονος. Ο "
|
|
Packit |
1470ea |
"χωρόχρονος είναι το λόγος του ποσού της μνήμης που χρησιμοποιείται και του "
|
|
Packit |
1470ea |
"χρόνου χρησιμοποίησης του. Αντιστοιχεί στον περιοχή των ζωνών στη γραφική "
|
|
Packit |
1470ea |
"παράσταση. Αυτό το μέρος του αρχείου μας λέει αυτό που ξέρουμε ήδη: το "
|
|
Packit |
1470ea |
"μεγαλύτερο μέρος του χωροχρόνου αφιερώνεται στο gdk_pixbuf_new. Για να "
|
|
Packit |
1470ea |
"ανακαλύψουν τι κάλεσε το gdk_pixbuf_new πρέπει να ψάξουμε περαιτέρω μέσα στο "
|
|
Packit |
1470ea |
"αρχείο κειμένου:"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/code
|
|
Packit |
1470ea |
#: C/massif.page:87
|
|
Packit |
1470ea |
#, no-wrap
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 4 ===========================\n"
|
|
Packit |
1470ea |
"Context accounted for 28.8% of measured spacetime\n"
|
|
Packit |
1470ea |
" 0x6BF83A: gdk_pixbuf_new (in /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
" 0x3A998998: (within /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so)\n"
|
|
Packit |
1470ea |
" 0x6C2760: (within /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
" 0x6C285E: gdk_pixbuf_new_from_file (in /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Called from:\n"
|
|
Packit |
1470ea |
" 27.8% : 0x804C1A3: load_scenario (swell-foop.c:463)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 0.9% : 0x3E8095E: (within /usr/lib/libgnomeui-2.so.0.792.0)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" and 1 other insignificant place\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 4 ===========================\n"
|
|
Packit |
1470ea |
"Πλαίσιο καταμέτρησης για το 28.8% του υπολογίσιμου χωροχρόνου\n"
|
|
Packit |
1470ea |
" 0x6BF83A: gdk_pixbuf_new (στο /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
" 0x3A998998: (μέσα στο /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so)\n"
|
|
Packit |
1470ea |
" 0x6C2760: (μέσα στο /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
" 0x6C285E: gdk_pixbuf_new_from_file (στο /usr/lib/libgdk_pixbuf-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Καλείται από:\n"
|
|
Packit |
1470ea |
" 27.8% : 0x804C1A3: load_scenario (swell-foop.c:463)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 0.9% : 0x3E8095E: (μέσα στο /usr/lib/libgnomeui-2.so.0.792.0)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" και 1 άλλη ασήμαντη θέση\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:102
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The first line tells us we are now four levels deep into the stack. Below it is "
|
|
Packit |
1470ea |
"a listing of the function calls that leads from here to gdk_pixbuf_new. Finally "
|
|
Packit |
1470ea |
"there is a list of functions that are at the next level down and call these "
|
|
Packit |
1470ea |
"functions. There are, of course, also entries for levels 1, 2, and 3, but this "
|
|
Packit |
1470ea |
"is the first level to reach right down through the GDK code to the <app>Swell "
|
|
Packit |
1470ea |
"Foop</app> code. From this listing, we can see instantly that the problem code "
|
|
Packit |
1470ea |
"is load_scenario."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η πρώτη γραμμή μας λέει ότι είμαστε τώρα τέσσερα επίπεδα βαθιά μέσα στη στοίβα. "
|
|
Packit |
1470ea |
"Από κάτω βρίσκεται η λίστα των κλήσεων λειτουργίας που μας οδηγεί από εδώ στο "
|
|
Packit |
1470ea |
"gdk_pixbuf_new. Τελικά υπάρχει μία λίστα λειτουργιών που είναι στο επόμενο κάτω "
|
|
Packit |
1470ea |
"επίπεδο και καλούν αυτές τις λειτουργίες. Υπάρχουν, φυσικά, καταχωρίσεις για τα "
|
|
Packit |
1470ea |
"επίπεδα 1, 2, και 3, αλλά αυτό είναι το πρώτο επίπεδο που φθάνει ακριβώς στον "
|
|
Packit |
1470ea |
"κώδικα GDK του <app>Swell Foop</app>. Από αυτήν την λίστα, μπορούμε να δούμε "
|
|
Packit |
1470ea |
"αμέσως ότι ο προβληματικός κώδικας είναι ο load_scenario."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:105
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Now that we know what part of our code is using all the spacetime we can look "
|
|
Packit |
1470ea |
"at it and find out why. It turns out that the load_scenario is loading a pixbuf "
|
|
Packit |
1470ea |
"from file and then never freeing that memory. Having identified the problem "
|
|
Packit |
1470ea |
"code, we can start to fix it."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τώρα που ξέρουμε ποιο μέρος του κώδικά μας χρησιμοποιεί όλο χωρόχρονο μπορούμε "
|
|
Packit |
1470ea |
"να εξετάσουμε και να ανακαλύψουμε το γιατί. Ως αποτέλεσμα βλέπουμε ότι το "
|
|
Packit |
1470ea |
"load_scenario φορτώνει την pixbuf από ένα αρχείο και έπειτα δεν απελευθερώνει "
|
|
Packit |
1470ea |
"ποτέ την μνήμη. Αφού προσδιορίσαμε τον προβληματικό κώδικα, μπορούμε να "
|
|
Packit |
1470ea |
"αρχίσουμε να τον διορθώνουμε."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/massif.page:110
|
|
Packit |
1470ea |
msgid "Acting on the Results"
|
|
Packit |
1470ea |
msgstr "Ενέργειες πάνω στα αποτελέσματα"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:111
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Reducing spacetime consumption is good, but there are two ways of reducing it "
|
|
Packit |
1470ea |
"and they are not equal. You can either reduce the amount of memory allocated, "
|
|
Packit |
1470ea |
"or reduce the amount of time it is allocated for. Consider for a moment a model "
|
|
Packit |
1470ea |
"system with only two processes running. Both processes use up almost all the "
|
|
Packit |
1470ea |
"physical RAM and if they overlap at all then the system will swap and "
|
|
Packit |
1470ea |
"everything will slow down. Obviously if we reduce the memory usage of each "
|
|
Packit |
1470ea |
"process by a factor of two then they can peacefully coexist without the need "
|
|
Packit |
1470ea |
"for swapping. If instead we reduce the time the memory is allocated by a factor "
|
|
Packit |
1470ea |
"of two then the two programs can coexist, but only as long as their periods of "
|
|
Packit |
1470ea |
"high memory use don't overlap. So it is better to reduce the amount of memory "
|
|
Packit |
1470ea |
"allocated."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Μειώνοντας την κατανάλωση του χωροχρόνου είναι κάτι καλό, αλλά υπάρχουν δύο "
|
|
Packit |
1470ea |
"τρόποι για την μείωση του που δεν είναι ισότιμες. Μπορείτε είτε να μειώσετε το "
|
|
Packit |
1470ea |
"ποσό μνήμης που διατίθεται, ή μειώστε το χρονικό διάστημα που του διατίθεται. "
|
|
Packit |
1470ea |
"Εξετάστε για μια στιγμή ένα πρότυπο σύστημα με μόνο δύο διαδικασίες ενεργές. "
|
|
Packit |
1470ea |
"Και οι δύο διαδικασίες καταναλώνουν σχεδόν όλη την φυσική μνήμη RAM και εάν "
|
|
Packit |
1470ea |
"κάποια στιγμή επικαλύψει η μία την άλλη το σύστημα θα κάνει αντιμετάθεση και "
|
|
Packit |
1470ea |
"όλα θα επιβραδύνουν. Προφανώς εάν μειώνουμε τη χρήση μνήμης σε κάθε διαδικασία "
|
|
Packit |
1470ea |
"με παράγοντα του δύο θα μπορούν ειρηνικά να συνυπάρξουν χωρίς την ανάγκη για "
|
|
Packit |
1470ea |
"αντιμετάθεση. Εάν αντ' αυτού μειώσουμε το χρόνο που διατίθεται η μνήμη με "
|
|
Packit |
1470ea |
"παράγοντα του δύο τότε τα δύο προγράμματα μπορούν να συνυπάρξουν, αλλά μόνο εφ' "
|
|
Packit |
1470ea |
"όσον οι περίοδοι υψηλής χρήσης της μνήμης τους δεν επικαλύπτονται. Έτσι είναι "
|
|
Packit |
1470ea |
"καλύτερο να μειωθεί το ποσό μνήμης που διατίθεται."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:114
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Unfortunately, the choice of optimization is also constrained by the needs of "
|
|
Packit |
1470ea |
"the program. The size of the pixbuf data in <app>Swell Foop</app> is determined "
|
|
Packit |
1470ea |
"by the size of the game's graphics and cannot be easily reduced. However, the "
|
|
Packit |
1470ea |
"amount of time it spends loaded into memory can be drastically reduced. The "
|
|
Packit |
1470ea |
"image below shows the <app>Massif</app> analysis of <app>Swell Foop</app> after "
|
|
Packit |
1470ea |
"being altered to dispose of the pixbufs once the images have been loaded into "
|
|
Packit |
1470ea |
"the X server."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Δυστυχώς, η επιλογή της βελτιστοποίησης περιορίζεται επίσης από τις ανάγκες του "
|
|
Packit |
1470ea |
"προγράμματος. Το μέγεθος των δεδομένων του pixbuf στο <app>Swell Foop</app> "
|
|
Packit |
1470ea |
"καθορίζεται από το μέγεθος των γραφικών του παιχνιδιού και δεν μπορεί να "
|
|
Packit |
1470ea |
"μειωθεί εύκολα. Εντούτοις, το χρονικό διάστημα που ξοδεύει κατά την φόρτωση του "
|
|
Packit |
1470ea |
"στη μνήμη μπορεί να μειωθεί δραστικά. Η παραπάνω εικόνα παρουσιάζει την ανάλυση "
|
|
Packit |
1470ea |
"του <app>Massif</app> για το <app>Swell Foop</app> μετά από την αλλαγή του για "
|
|
Packit |
1470ea |
"να απορρίπτει τα pixbufs μόλις φορτωθούν οι εικόνες στον διακομιστή X."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: figure/title
|
|
Packit |
1470ea |
#: C/massif.page:123
|
|
Packit |
1470ea |
msgid "<app>Massif</app> output for the optimized <app>Swell Foop</app> program."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Έξοδος του <app>Massif</app> για την βελτιστοποιημένο πρόγραμμα <app>Swell "
|
|
Packit |
1470ea |
"Foop</app>."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:126
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"The spacetime use of gdk_pixbuf_new is now a thin band that only spikes briefly "
|
|
Packit |
1470ea |
"(it is now the sixteenth band down and shaded magenta). As a bonus, the peak "
|
|
Packit |
1470ea |
"memory use has dropped by 200 kB since the spike occurs before other memory is "
|
|
Packit |
1470ea |
"allocated. If two processes like this were run together the chances of the peak "
|
|
Packit |
1470ea |
"memory usage coinciding, and hence the risk of swapping, would be quite low."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Η χρήση του χωροχρόνου από το gdk_pixbuf_new είναι τώρα μια λεπτή ζώνη που έχει "
|
|
Packit |
1470ea |
"σύντομες αναλαμπές (είναι τώρα η δέκατη έκτη ζώνη και βαθυπόρφυρη απόχρωση). "
|
|
Packit |
1470ea |
"Σαν πρόσθετο χαρακτηριστικό, η μέγιστη χρήση μνήμης έχει ελαττωθεί κατά 200 kB "
|
|
Packit |
1470ea |
"δεδομένου ότι η αιχμή εμφανίζεται πριν δεσμευτεί η μνήμη. Εάν δύο διαδικασίες "
|
|
Packit |
1470ea |
"όπως αυτή εκτελούνται από κοινού οι πιθανότητες της μέγιστης χρήσης μνήμης "
|
|
Packit |
1470ea |
"συμπίπτουν, και ως εκ τούτου ο κίνδυνος αντιμετάθεσης, θα είναι αρκετά χαμηλός."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:129
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Can we do better ? A quick examination of <app>Massif</app>'s text output "
|
|
Packit |
1470ea |
"reveals: g_strdup to be the new major offender."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Μπορούμε να το κάνουμε καλύτερα; Μια γρήγορη εξέταση της εξόδου κειμένου του "
|
|
Packit |
1470ea |
"<app>Massif</app> αποκαλύπτει ότι: το g_strdup είναι ο νέος σημαντικός ένοχος."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/code
|
|
Packit |
1470ea |
#: C/massif.page:132
|
|
Packit |
1470ea |
#, no-wrap
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Command: ./swell-foop\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 0 ===========================\n"
|
|
Packit |
1470ea |
"Heap allocation functions accounted for 87.6% of measured spacetime\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Called from:\n"
|
|
Packit |
1470ea |
" 7.7% : 0x5A32A5: g_strdup (in /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 7.6% : 0x43BC9F: (within /usr/lib/libgdk-x11-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 6.9% : 0x510B3C: (within /usr/lib/libfreetype.so.6.3.7)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 5.2% : 0x2A4A6B: __gconv_open (in /lib/tls/libc-2.3.3.so)\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Εντολή: ./swell-foop\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 0 ===========================\n"
|
|
Packit |
1470ea |
"Συναρτήσεις κατανομής σωρών που καταμετρήθηκαν ως το 87.6% από το μετρήσιμο χωρόχρονο\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Καλείται από:\n"
|
|
Packit |
1470ea |
" 7.7% : 0x5A32A5: g_strdup (στο /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 7.6% : 0x43BC9F: (μέσα στο /usr/lib/libgdk-x11-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 6.9% : 0x510B3C: (μέσα στο /usr/lib/libfreetype.so.6.3.7)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 5.2% : 0x2A4A6B: __gconv_open (στο /lib/tls/libc-2.3.3.so)\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:147
|
|
Packit |
1470ea |
msgid "If we look closer though we see that it is called from many, many, places."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Εάν το εξετάσουμε ποιο ενδελεχώς θα δούμε ότι καλείται από πολλές, πολλές, "
|
|
Packit |
1470ea |
"διαφορετικές θέσεις."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/code
|
|
Packit |
1470ea |
#: C/massif.page:150
|
|
Packit |
1470ea |
#, no-wrap
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 1 ===========================\n"
|
|
Packit |
1470ea |
"Context accounted for 7.7% of measured spacetime\n"
|
|
Packit |
1470ea |
" 0x5A32A5: g_strdup (in /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Called from:\n"
|
|
Packit |
1470ea |
" 1.8% : 0x8BF606: gtk_icon_source_copy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 1.1% : 0x67AF6B: g_param_spec_internal (in /usr/lib/libgobject-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 0.9% : 0x91FCFC: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 0.8% : 0x57EEBF: g_quark_from_string (in /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" and 155 other insignificant places\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"== 1 ===========================\n"
|
|
Packit |
1470ea |
"Πλαίσιο καταμέτρησης για το 7.7% του υπολογίσιμου χωροχρόνου\n"
|
|
Packit |
1470ea |
" 0x5A32A5: g_strdup (στο /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
"Κλήθηκε από:\n"
|
|
Packit |
1470ea |
" 1.8% : 0x8BF606: gtk_icon_source_copy (στο /usr/lib/libgtk-x11-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 1.1% : 0x67AF6B: g_param_spec_internal (στο /usr/lib/libgobject-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 0.9% : 0x91FCFC: (μέσα στο /usr/lib/libgtk-x11-2.0.so.0.400.9)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" 0.8% : 0x57EEBF: g_quark_from_string (στο /usr/lib/libglib-2.0.so.0.400.6)\n"
|
|
Packit |
1470ea |
"\n"
|
|
Packit |
1470ea |
" και 155 άλλες ασήμαντες θέσεις\n"
|
|
Packit |
1470ea |
" "
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:166
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"We now face diminishing returns for our optimization efforts. The graph hints "
|
|
Packit |
1470ea |
"at another possible approach: Both the \"other\" and \"heap admin\" bands are "
|
|
Packit |
1470ea |
"quite large. This tells us that there are a lot of small allocations being made "
|
|
Packit |
1470ea |
"from a variety of places. Eliminating these will be difficult, but if they can "
|
|
Packit |
1470ea |
"be grouped then the individual allocations can be larger and the \"heap admin\" "
|
|
Packit |
1470ea |
"overhead can be reduced."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Τώρα αντιμετωπίζουμε την ελάττωση της ανταμοιβή μας για τις προσπάθειες "
|
|
Packit |
1470ea |
"βελτιστοποίησής. Οι συμβουλές γραφικών παραστάσεων είναι μια άλλη πιθανή "
|
|
Packit |
1470ea |
"προσέγγιση: Και οι δύο ζώνες \"other\" και \"heap admin\" είναι αρκετά μεγάλες. "
|
|
Packit |
1470ea |
"Αυτό μας λέει ότι υπάρχουν πολλές μικρές κατανομές που έχουν γίνει από ποικίλες "
|
|
Packit |
1470ea |
"θέσεις. Η εξάλειψη τους θα είναι δύσκολη, αλλά εάν μπορέσουν να ομαδοποιηθούν "
|
|
Packit |
1470ea |
"τότε οι μεμονωμένες κατανομές μπορούν να γίνουν μεγαλύτερες και η επιβάρυνση "
|
|
Packit |
1470ea |
"του \"heap admin\" μπορεί να μειωθεί."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/title
|
|
Packit |
1470ea |
#: C/massif.page:171
|
|
Packit |
1470ea |
msgid "Caveats"
|
|
Packit |
1470ea |
msgstr "Προειδοποιήσεις"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:172
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"There are a couple of things to watch out for: Firstly, spacetime is only "
|
|
Packit |
1470ea |
"reported as a percentage, you have to compare it to the overall size of the "
|
|
Packit |
1470ea |
"program to decide if the amount of memory is worth pursuing. The graph, with "
|
|
Packit |
1470ea |
"its kilobyte vertical axis, is good for this."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Υπάρχουν μερικά πράγματα που θα πρέπει να προσέξετε: Αρχικά, ο χωρόχρονος "
|
|
Packit |
1470ea |
"εμφανίζεται μόνο ως ποσοστό, πρέπει να το συγκρίνετε με το γενικό μέγεθος του "
|
|
Packit |
1470ea |
"προγράμματος για να αποφασίσει εάν το ποσό μνήμης αξίζει να δαπανηθεί. Η "
|
|
Packit |
1470ea |
"γραφική παράσταση, με τον κάθετο άξονα σε kilobyte, είναι ιδανικό για κάτι "
|
|
Packit |
1470ea |
"τέτοιο."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#. (itstool) path: section/p
|
|
Packit |
1470ea |
#: C/massif.page:175
|
|
Packit |
1470ea |
msgid ""
|
|
Packit |
1470ea |
"Secondly, <app>Massif</app> only takes into account the memory used by your own "
|
|
Packit |
1470ea |
"program. Resources like pixmaps are stored in the X server and aren't "
|
|
Packit |
1470ea |
"considered by <app>Massif</app>. In the <app>Swell Foop</app> example we have "
|
|
Packit |
1470ea |
"actually only moved the memory consumption from client-side pixbufs to server-"
|
|
Packit |
1470ea |
"side pixmaps. Even though we cheated there are performance gains. Keeping the "
|
|
Packit |
1470ea |
"image data in the X server makes the graphics routines quicker and removes a "
|
|
Packit |
1470ea |
"lot of inter-process communication. Also, the pixmaps will be stored in a "
|
|
Packit |
1470ea |
"native graphics format which is often more compact than the 32-bit RGBA format "
|
|
Packit |
1470ea |
"used by gdk_pixbuf. To measure the effect of pixmaps, and other X resources use "
|
|
Packit |
1470ea |
"the <link href=\"http://www.freedesktop.org/Software/xrestop\">xrestop</link> "
|
|
Packit |
1470ea |
"program."
|
|
Packit |
1470ea |
msgstr ""
|
|
Packit |
1470ea |
"Αφετέρου, το <app>Massif</app> λαμβάνει υπόψη μόνο τη μνήμη που χρησιμοποιείται "
|
|
Packit |
1470ea |
"από τα προγράμματα σας. Οι πόροι όπως τα pixmaps αποθηκεύονται στον διακομιστή "
|
|
Packit |
1470ea |
"X και δεν εξετάζονται από το <app>Massif</app>. Στο παράδειγμα με το <app>Swell "
|
|
Packit |
1470ea |
"Foop</app> στην πραγματικότητα έχουμε μετακινήσει την κατανάλωση μνήμης μόνο "
|
|
Packit |
1470ea |
"την pixbufs από την πλευρά του προγράμματος πελάτη στα pixmaps από την πλευρά "
|
|
Packit |
1470ea |
"του διακομιστή. Αν και κάναμε μία μικρή απάτη, υπάρχουν κέρδη στην απόδοση. Αν "
|
|
Packit |
1470ea |
"κρατήσουμε τα δεδομένα εικόνας του διακομιστή X καθιστά τις ρουτίνες γραφικής "
|
|
Packit |
1470ea |
"αναπαράστασης γρηγορότερες και αφαιρεί πολύ διεπεξεργαστική επικοινωνία. "
|
|
Packit |
1470ea |
"Επίσης, τα pixmaps θα αποθηκευτούν σε μία εγγενή μορφή γραφικών που είναι συχνά "
|
|
Packit |
1470ea |
"συμπαγέστερο από τη μορφή 32-δυαδικών RGBA που χρησιμοποιείται από το "
|
|
Packit |
1470ea |
"gdk_pixbuf. Για να μετρηθεί η επίδραση των pixmaps και άλλων πόρων του "
|
|
Packit |
1470ea |
"διακομιστή X χρησιμοποιήστε το πρόγραμμα
|
|
Packit |
1470ea |
"org/Software/xrestop\">xrestop</link>."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "Optimizing GNOME Software"
|
|
Packit |
1470ea |
#~ msgstr "Βελτιστοποίηση λογισμικού του GNOME"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "GNOME Documentation Project"
|
|
Packit |
1470ea |
#~ msgstr "Πρόγραμμα τεκμηρίωσης του GNOME"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "<year>2004-2005</year> <holder>Callum McKenzie</holder>"
|
|
Packit |
1470ea |
#~ msgstr "<year>2004-2005</year> <holder>Callum McKenzie</holder>"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "<year>2004-2005</year> <holder>Robert Love</holder>"
|
|
Packit |
1470ea |
#~ msgstr "<year>2004-2005</year> <holder>Robert Love</holder>"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "<firstname>Callum</firstname> <surname>McKenzie</surname>"
|
|
Packit |
1470ea |
#~ msgstr "<firstname>Callum</firstname> <surname>McKenzie</surname>"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "<firstname>Robert</firstname> <surname>Love</surname>"
|
|
Packit |
1470ea |
#~ msgstr "<firstname>Robert</firstname> <surname>Love</surname>"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "William Johnston"
|
|
Packit |
1470ea |
#~ msgstr "William Johnston"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "Intial conversion to docbook format."
|
|
Packit |
1470ea |
#~ msgstr "Μετατροπή από Intial στην μορφή docbook."
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid ""
|
|
Packit |
1470ea |
#~ "<revnumber>0.1</revnumber> <date>November 2007</date> <_:revdescription-1/>"
|
|
Packit |
1470ea |
#~ msgstr ""
|
|
Packit |
1470ea |
#~ "<revnumber>0.1</revnumber> <date>Νοέμβριος 2007</date> <_:revdescription-1/>"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "The Quick Guide to Optimizing GNOME Programs"
|
|
Packit |
1470ea |
#~ msgstr "Ένας γρήγορος οδηγός για τη βελτιστοποίηση των προγραμμάτων του GNOME"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "Callum"
|
|
Packit |
1470ea |
#~ msgstr "Callum"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "McKenzie"
|
|
Packit |
1470ea |
#~ msgstr "McKenzie"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "Robert"
|
|
Packit |
1470ea |
#~ msgstr "Robert"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "Love"
|
|
Packit |
1470ea |
#~ msgstr "Love"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "0.1"
|
|
Packit |
1470ea |
#~ msgstr "0.1"
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#~ msgid "November 2007"
|
|
Packit |
1470ea |
#~ msgstr "Νοέμβριος 2007"
|