
~~[Μια απάντηση](https://stackoverflow.com/questions/354160/what-do-you-do-while-your-codes-compiling#354176)~~  **(βλέπε παρακάτω)** σε μία από τις ερωτήσεις εδώ για υπερχείλιση στοίβας μου έδωσε μια ιδέα για ένα μεγάλο μικρό κομμάτι του λογισμικού που θα μπορούσε να είναι ανεκτίμητη για προγραμματιστές παντού.


Φαντάζομαι λογισμικό δίσκο μνήμης RAM, αλλά με μια σημαντική διαφορά - θα αντικατοπτρίζουν το πραγματικό φάκελο στο σκληρό δίσκο μου. Πιο συγκεκριμένα - το φάκελο που περιέχει το έργο Είμαι σήμερα εργάζονται σε. Με αυτό τον τρόπο οποιαδήποτε χτίζει θα είναι σχεδόν στιγμιαία (ή τουλάχιστον ένα ζευγάρι τάξεις μεγέθους πιο γρήγορα). Η μονάδα δίσκου RAM θα ​​συγχρονίσετε το περιεχόμενό του με το σκληρό δίσκο στο παρασκήνιο χρησιμοποιώντας μόνο αδρανές πόρων.


Μια γρήγορη αναζήτηση στο Google αποκάλυψε τίποτα, αλλά ίσως απλά δεν ξέρω πώς να το Google. Ίσως κάποιος ξέρει ενός τέτοιου λογισμικού; Κατά προτίμηση δωρεάν, αλλά εύλογες αμοιβές μπορεί να είναι πολύ ΟΚ.


**Προστέθηκε:** Ορισμένες λύσεις έχουν προταθεί οι οποίες θα απορρίπτονται στην αρχή. Θα είναι (χωρίς συγκεκριμένη σειρά):


* **Αγοράστε ένα αυτοκίνητο πιο γρήγορα σκληρού δίσκου ( [SSD](http://en.wikipedia.org/wiki/Solid-state_drive) ίσως ή 10K RPM).** Δεν θέλω μια λύση hardware. Δεν είναι μόνο το λογισμικό έχει τη δυνατότητα να είναι φθηνότερα, αλλά μπορεί επίσης να χρησιμοποιηθεί σε περιβάλλοντα όπου οι τροποποιήσεις του υλικού θα ήταν ευπρόσδεκτη, αν όχι αδύνατο (δωρεάν, κανείς;) - ας πούμε, στο γραφείο.
* **Ας OS / HDD κάνει την προσωρινή αποθήκευση - που ξέρει καλύτερα πώς να χρησιμοποιήσετε ελεύθερη μνήμη RAM σας.** Το OS / HDD έχουν γενική αλγόριθμους προσωρινή μνήμη cache που τα πάντα και να προσπαθήσουμε να προβλέψουμε ποια δεδομένα θα χρειάζεται περισσότερο στο μέλλον. Δεν έχουν καμία ιδέα ότι για μένα η προτεραιότητα είναι το φάκελο του έργου μου. Και όπως όλοι γνωρίζουμε πολύ καλά - ότι δεν πραγματικά cache πολύ ούτως ή άλλως. ?)
* **Υπάρχουν πολλές μονάδες μνήμης RAM γύρω? χρησιμοποιήσετε ένα από αυτά.** Δυστυχώς, αυτό θα ήταν απερίσκεπτο. Χρειάζομαι τα στοιχεία μου για να συγχρονιστούν πίσω στο σκληρό δίσκο κάθε φορά που υπάρχει ένα κομμάτι του ελεύθερου χρόνου. Σε περίπτωση διακοπής του ηλεκτρικού ρεύματος θα μπορούσε να φέρει χάσει τα τελευταία πέντε λεπτά της εργασίας, αλλά όχι πάντα, από την τελευταία checkin μου.


**Προστέθηκε 2:** Μια ιδέα που ήρθε - χρησιμοποιήστε ένα κανονικό δίσκο RAM συν ένα συγχρονισμού φάκελο φόντο (αλλά εννοώ **φόντο** ). Υπάρχει τέτοιο πράγμα;


**Προστέθηκε 3:** Ενδιαφέρον. Απλά προσπάθησα μια απλή μονάδα δίσκου RAM στην εργασία. Ο χρόνος ανοικοδόμηση πέφτει από ~ 14 δευτερόλεπτα σε ~ 7 δευτερόλεπτα (δεν είναι κακό), αλλά σταδιακή κατασκευή είναι ακόμη σε ~ 5 δευτερόλεπτα - ακριβώς όπως στο σκληρό δίσκο. Οποιεσδήποτε ιδέες γιατί; Χρησιμοποιεί `aspnet_compiler`και `aspnet_merge`. Ίσως να κάνουμε κάτι με άλλα αρχεία temp αλλού;


**Προστέθηκε 4:** Αχ, ωραία νέα σειρά απαντήσεων! :) Εντάξει, έχω λίγο περισσότερες πληροφορίες για όλους εσάς τους αρνητές. :)


Ένας από τους κύριους λόγους για αυτή την ιδέα δεν είναι το προαναφερθέν λογισμικό (14 δευτερόλεπτα χρόνος κατασκευής), αλλά ένα άλλο που δεν είχα πρόσβαση εκείνη την εποχή. Αυτή η άλλη εφαρμογή έχει μια βάση κώδικα 100 MB, και την πλήρη κατασκευή του διαρκεί περίπου 5 λεπτά. Α ναι, είναι σε [Δελφοί 5](http://en.wikipedia.org/wiki/Embarcadero_Delphi) , έτσι ώστε ο compiler δεν είναι πολύ προχωρημένη. :) Κάνοντας την πηγή σε μια μονάδα RAM ως αποτέλεσμα μια μεγάλη διαφορά. Το πήρα κάτω από ένα λεπτό, νομίζω. Δεν έχουν μετρήσει. Έτσι, για όλους εκείνους που λένε ότι το λειτουργικό σύστημα μπορεί cache πράγματα καλύτερα - θα ήθελα να διαφωνήσω.


**Σχετικά Ερώτηση:** 



> 
> [δίσκου RAM για την ταχύτητα μέχρι IDE](https://stackoverflow.com/questions/501718/ram-disk-for-speed-up-ide)
> 
> 
> 


**Σημείωση για πρώτη σύνδεσμο:** 
Το θέμα με το οποίο συνδέει έχει διαγραφεί επειδή ήταν διπλότυπο. Ζήτησε από:



> 
> Τι κάνετε κατά τη μεταγλώττιση κωδικό σας;
> 
> 
> 


Και η απάντηση από τον [Dmitri Nesteruk](https://stackoverflow.com/users/9476/dmitri-nesteruk) στην οποία συνδέονται ήταν:



> 
> Έχω συγκεντρώσει σχεδόν αμέσως. Εν μέρει λόγω των έργων μου είναι μικρό, εν μέρει λόγω της χρήσης των δίσκων RAM.
> 
> 
> 

 
δίσκο RAM για τη σύνταξη - είναι ένα τέτοιο πράγμα;
===================================================



Στο Linux (ποτέ δεν αναφέρεται ποια OS βρίσκεστε, έτσι αυτό *θα μπορούσε* να είναι σχετικό), μπορείτε να δημιουργήσετε τις συσκευές μπλοκ από τη μνήμη RAM και να τα τοποθετήσετε όπως και κάθε άλλη συσκευή μπλοκ (δηλαδή, ένας σκληρός δίσκος).


Στη συνέχεια, μπορείτε να δημιουργήσετε σενάρια που αντιγράφουν προς και από αυτό το δίσκο κατά την εκκίνηση / διακοπή λειτουργίας, καθώς και περιοδικά.


Για παράδειγμα, μπορείτε να το ρυθμίσετε έτσι έπρεπε `~/code`και `~/code-real`. Μπλοκ RAM σας παίρνει τοποθετημένη σε `~/code`κατά την εκκίνηση, και στη συνέχεια τα πάντα, από `~/code-real`(το οποίο είναι στο πρότυπο του σκληρού σας δίσκου) αντιγράφεται πάνω. Στη διακοπή λειτουργίας τα πάντα θα αντιγραφούν ( [rsync](http://en.wikipedia.org/wiki/Rsync) d»θα είναι ταχύτερη) πίσω από το `~/code`να `~/code-real`. Θα ήταν επίσης πιθανόν να θέλουν να script να τρέχει περιοδικά, έτσι δεν έχετε να χάσετε πολλή δουλειά σε περίπτωση διακοπής ρεύματος, κ.λπ.


Δεν κάνω αυτό πια (το χρησιμοποίησα για την [όπερα](http://en.wikipedia.org/wiki/Opera_%28web_browser%29) , όταν το 9.5 beta ήταν αργή, δεν χρειάζεται πια).


[Εδώ είναι πώς να δημιουργήσετε ένα δίσκο μνήμης RAM στο Linux.](http://www.vanemery.com/Linux/Ramdisk/ramdisk.html) 

 

Είμαι έκπληκτος με το πόσο πολλοί άνθρωποι δείχνουν ότι το λειτουργικό σύστημα μπορεί να κάνει καλύτερη δουλειά στην υπολογίζει τις ανάγκες caching σας από ό, τι μπορείτε να κάνετε σε αυτή την εξειδικευμένη περίπτωση. Αν και δεν έκανα αυτό για την κατάρτιση, έκανα το κάνει για παρόμοιες διαδικασίες και κατέληξα να χρησιμοποιείτε ένα δίσκο μνήμης RAM με σενάρια που αυτοματοποιημένα το συγχρονισμό.


Σε αυτήν την περίπτωση, νομίζω ότι θα πάει με ένα σύγχρονο σύστημα ελέγχου της πηγής. Σε κάθε μεταγλώττιση θα ελέγξετε τον πηγαίο κώδικα (μαζί ένα πειραματικό κλάδο, αν χρειάζεται) αυτομάτως, έτσι ώστε κάθε μεταγλώττισης θα είχε ως αποτέλεσμα τα δεδομένα να αποθηκεύονται μακριά.


Για να ξεκινήσετε την ανάπτυξη, ξεκινήστε το δίσκο RAM και τραβήξτε την τρέχουσα γραμμή βάσης. Κάντε το μοντάζ, την κατάρτιση, την επεξεργασία, την κατάρτιση, κλπ - όλο αυτό το διάστημα οι αλλαγές αποθηκεύονται για εσάς.


Κάντε το τελικό check-in, όταν χαρούμενος, και δεν χρειάζεται καν να περιλαμβάνει τακτικές σκληρό σας δίσκο.


Αλλά υπάρχουν συγχρονιζέ υπόβαθρο που θα αυτοματοποιήσει τα πράγματα - το θέμα είναι ότι δεν θα πρέπει να βελτιστοποιηθεί για τον προγραμματισμό ούτε και μπορεί να χρειαστεί να κάνετε πλήρη κατάλογο και το αρχείο σαρώνει περιστασιακά να πιάσει αλλαγές. Ένα σύστημα ελέγχου πηγαίου κώδικα έχει σχεδιαστεί ακριβώς για το σκοπό αυτό, γι 'αυτό πιθανότατα θα είναι χαμηλότερη από πάνω, ακόμη και αν υπάρχει στην εγκατάσταση κατασκευής σας.


Λάβετε υπόψη ότι η εργασία στο παρασκήνιο συγχρονισμού, σε περίπτωση διακοπής ρεύματος, είναι απροσδιόριστο. Θα καταλήξετε να καταλάβω τι είχε σωθεί και τι δεν είχε σωθεί αν τα πράγματα πήγαν στραβά. Με ορίζεται αποθηκεύσετε το σημείο (σε κάθε μεταγλώττιση, ή αναγκάζονται με το χέρι) που θα έχετε μια αρκετά καλή ιδέα ότι ήταν τουλάχιστον σε μια κατάσταση όπου νόμιζες ότι θα μπορούσε να το υπολογίσουν. Χρησιμοποιήστε ένα [VCS](https://en.wikipedia.org/wiki/Revision_control) και μπορείτε εύκολα να συγκριθεί με το προηγούμενο κώδικα και να δούμε τι αλλαγές που έχετε ήδη εφαρμόζονται.

 

Δείτε *[Επιτάχυνση προκύψει με tmpfs](https://wiki.gentoo.org/wiki/Speeding_up_emerge_with_tmpfs)* ( [Gentoo Linux](https://en.wikipedia.org/wiki/Gentoo_Linux) wiki).


Επιτάχυνση καταρτίζει χρησιμοποιώντας δίσκους RAM κάτω από το Gentoo ήταν το αντικείμενο της Α-Πώς να γράψει πολλά αιώνες πριν. Παρέχει ένα συγκεκριμένο παράδειγμα για το τι έχει γίνει. Η ουσία είναι ότι όλοι πηγή και να οικοδομήσουν το ενδιάμεσο αρχείο ανακατευθύνονται σε ένα δίσκο RAM για τη μεταγλώττιση, ενώ οι τελικές εκτελέσιμα κατευθύνεται στο σκληρό δίσκο για την εγκατάσταση.


Επίσης, ήθελα να συστήσω την εξερεύνηση διατήρηση πηγή σας στο σκληρό δίσκο, αλλά `git push`τις τελευταίες αλλαγές πηγή σας με ένα κλώνο respository που βρίσκεται στο δίσκο RAM. Καταρτίσει τον κλώνο. Χρησιμοποιήστε τα αγαπημένα σας σενάριο για να αντιγράψετε τα δυαδικά αρχεία που δημιουργούνται.


Ελπίζω ότι βοηθά.

 

Χρησιμοποιήστε <https://wiki.archlinux.org/index.php/Ramdisk> να κάνει το δίσκο RAM.


Τότε έγραψα αυτά τα σενάρια να κινηθεί καταλόγους από και προς το δίσκο RAM. Δημιουργία αντιγράφων ασφαλείας γίνεται σε [πίσσα](http://en.wikipedia.org/wiki/Tar_%28computing%29) αρχείο πριν από τη μετάβαση στο δίσκο RAM. Το όφελος του να κάνει αυτό τον τρόπο είναι ότι ο δρόμος παραμένει το ίδιο, έτσι ώστε όλα τα αρχεία ρυθμίσεων σας δεν χρειάζεται να αλλάξουν. Όταν τελειώσετε, χρησιμοποιήστε `uramdir`για να φέρει πίσω στο δίσκο.


Επεξεργασία: Προστέθηκε κώδικα C που θα εκτελεστεί καμία εντολή δίνεται για ένα διάστημα στο παρασκήνιο. Είμαι η αποστολή `tar`με `--update`την ενημέρωση του αρχείου, αν τυχόν αλλαγές.


Πιστεύω ότι αυτή η λύση γενικής χρήσης κτυπά κάνοντας μια μοναδική λύση για κάτι πολύ απλό. ΦΙΛΙ


**Βεβαιωθείτε ότι έχετε αλλάξει πορεία για να rdbackupd**


### ramdir



```
#!/bin/bash

# May need some error checking for bad input.

# Convert relative path to absolute
# /bin/pwd gets real path without symbolic link on my system and pwd
# keeps symbolic link. You may need to change it to suit your needs.
somedir=`cd $1; /bin/pwd`;
somedirparent=`dirname $somedir`

# Backup directory
/bin/tar cf $somedir.tar $somedir

# Copy, tried move like https://wiki.archlinux.org/index.php/Ramdisk
# suggests, but I got an error.
mkdir -p /mnt/ramdisk$somedir
/bin/cp -r  $somedir /mnt/ramdisk$somedirparent

# Remove  directory
/bin/rm -r $somedir

# Create symbolic link. It needs to be in parent of given folder.
/bin/ln -s /mnt/ramdisk$somedir $somedirparent

#Run updater
~/bin/rdbackupd "/bin/tar -uf $somedir.tar $somedir" &

```

### uramdir



```
#!/bin/bash

#Convert relative path to absolute
#somepath would probably make more sense
# pwd and not /bin/pwd so we get a symbolic path.
somedir=`cd $1; pwd`;

# Remove symbolic link
rm $somedir

# Copy dir back
/bin/cp -r /mnt/ramdisk$somedir $somedir

# Remove from ramdisk
/bin/rm -r /mnt/ramdisk$somedir

# Stop
killall rdbackupd

```

rdbackupd.cpp



```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <signal.h>
#include <sys/time.h>

struct itimerval it;
char* command;

void update_archive(int sig)
{
    system(command);
}

int main(int argc, char**argv)
{
    it.it_value.tv_sec     = 1;   // Start right now
    it.it_value.tv_usec    = 0;
    it.it_interval.tv_sec  = 60;  // Run every 60 seconds
    it.it_interval.tv_usec = 0;

    if (argc < 2)
    {
        printf("rdbackupd: Need command to run\n");
        return 1;
    }
    command = argv[1];

    signal(SIGALRM, update_archive);
    setitimer(ITIMER_REAL, &it, NULL); // Start

    while(true);

    return 0;
}

```
 

Δεν έχω ακριβώς αυτό που ψάχνετε, αλλά είμαι τώρα χρησιμοποιούν ένα συνδυασμό των [Ramdisk](http://www.mydigitallife.info/2007/05/27/free-ramdisk-for-windows-vista-xp-2000-and-2003-server/) και [DRAM ramdisk](http://www.acard.com.tw/english/fb01-product.jsp?prod_no=ANS-9010&type1_title=%20Solid%20State%20Drive&idno_no=270) . Δεδομένου ότι αυτό είναι τα Windows, έχω ένα σκληρό όριο του 3 GB για πυρήνα της μνήμης, που σημαίνει ότι δεν μπορώ να χρησιμοποιήσω πάρα πολύ μνήμη για έναν δίσκο μνήμης RAM. 4 GB επιπλέον για το 9010 είναι πραγματικά πετρώματα. Άφησα IDE κατάστημά μου όλες τις προσωρινές πράγματα του στο δίσκο στερεάς κατάστασης μνήμης RAM, αλλά και το [Maven](http://en.wikipedia.org/wiki/Apache_Maven) αποθετήριο. Ο δίσκος DRAM μνήμης RAM έχει μια εφεδρική μπαταρία στην κάρτα flash. Αυτό ακούγεται σαν μια διαφήμιση, αλλά είναι πραγματικά μια εξαιρετική ρύθμιση.


Ο δίσκος DRAM έχει διπλό SATA-300 λιμάνια και βγαίνει με 0,0 ms μέσο όρο αναζητήσουν στις περισσότερες δοκιμές?) Κάτι για την αποθήκευση των Χριστουγέννων;

 

Το λειτουργικό σας σύστημα αποθηκεύει προσωρινά τα πράγματα στη μνήμη, καθώς αυτό λειτουργεί. Ένας δίσκος RAM μπορεί να φαίνεται πιο γρήγορα, αλλά αυτό είναι επειδή δεν είστε factoring στην «αντίγραφο για να Ramdisk» και «αντίγραφο από RAMDisk» φορές. Αφιερώνοντας RAM σε ένα σταθερό μέγεθος δίσκο ram μειώνει μόνο τη διαθέσιμη μνήμη για προσωρινή αποθήκευση. Το λειτουργικό σύστημα ξέρει καλύτερα τι χρειάζεται για να είναι στη μνήμη RAM.

 

Ναι, έχω συναντήσει το ίδιο πρόβλημα. Και μετά από άκαρπες googling που μόλις έγραψα μια υπηρεσία των Windows για τεμπέληδες δημιουργία αντιγράφων ασφαλείας της μονάδας RAM (στην πραγματικότητα - σε κάθε φάκελο, επειδή το αυτοκίνητο RAM μπορεί να τοποθετηθεί σε, για παράδειγμα, την επιφάνεια εργασίας).


<http://bitbucket.org/xkip/transparentbackup> 
Μπορείτε να καθορίσετε το διάστημα για την πλήρη σάρωση (προεπιλογή 5 λεπτά). Και ένα χρονικό διάστημα για τη σάρωση κοινοποιούνται μόνο αρχεία (προεπιλογή 30 δευτερόλεπτα). Σάρωση εντοπίσει τροποποιημένα αρχεία χρησιμοποιώντας το χαρακτηριστικό «αρχείο» (το λειτουργικό σύστημα επαναφέρει ότι ένας ειδικά για την αρχειοθέτηση σκοπούς). Μόνο τα αρχεία που τροποποιήθηκαν με αυτόν τον τρόπο υποστηρίζονται.


Η υπηρεσία αφήνει ένα ειδικό αρχείο δείκτη για να βεβαιωθείτε ότι η δημιουργία αντιγράφων ασφαλείας στόχος είναι ακριβώς ένα αντίγραφο ασφαλείας της πηγής. Εάν η πηγή είναι άδειο και δεν περιέχει ένα αρχείο δείκτη, η υπηρεσία εκτελεί αυτόματη επαναφορά από backup. Έτσι, μπορείτε εύκολα να καταστρέψει τη μονάδα μνήμης RAM και να δημιουργήσει ξανά με αυτόματη επαναφορά δεδομένων. Είναι καλύτερο να χρησιμοποιήσετε ένα δίσκο μνήμης RAM που είναι σε θέση να δημιουργήσετε ένα διαμέρισμα στο σύστημα εκκίνησης μπορεί να λειτουργήσει με διαφάνεια.


Μια άλλη λύση που έχω εντοπιστεί πρόσφατα είναι [SuperSpeed SuperCache](http://www.superspeed.com/desktop/supercache.php) .


Αυτή η εταιρεία έχει επίσης ένα δίσκο μνήμης RAM, αλλά αυτό είναι ένα άλλο λογισμικό. SuperCache σας επιτρέπει να χρησιμοποιήσετε επιπλέον μνήμη RAM για μπλοκ σε επίπεδο προσωρινής αποθήκευσης (είναι πολύ διαφορετική από την προσωρινή αποθήκευση αρχείων), και μια άλλη επιλογή - καθρέφτη σας οδηγήσει στη RAM εντελώς. Σε κάθε σενάριο μπορείτε να καθορίσετε πόσο συχνά να πέσει βρώμικο μπλοκ πίσω στο σκληρό δίσκο, καθιστώντας γράφει όπως στη μονάδα δίσκου RAM, αλλά το σενάριο καθρέφτη κάνει, επίσης, μοιάζει από τη μονάδα μνήμης RAM. Μπορείτε να δημιουργήσετε μια μικρή κατάτμηση, για παράδειγμα, 2 GB (χρησιμοποιώντας το Windows) και να χαρτογραφήσει ολόκληρο το διαμέρισμα στο RAM.


Μια ενδιαφέρουσα και πολύ χρήσιμο πράγμα για αυτή τη λύση - μπορείτε να αλλάξετε την προσωρινή αποθήκευση και αντανακλώντας τις επιλογές οποιαδήποτε στιγμή ακριβώς αμέσως με δύο κλικ. Για παράδειγμα, αν θέλετε 2 GB σας πίσω για gamimg ή εικονική μηχανή - μπορείτε απλά να σταματήσει mirroring αμέσως και να απελευθερώσει μνήμη πίσω. Ακόμη και άνοιξε λαβές αρχείο δεν σπάσει - το διαμέρισμα συνεχίζει να λειτουργεί, αλλά ως ένα συνηθισμένο αυτοκίνητο.


EDIT: Επίσης, συνιστούμε να μετακινήσετε το φάκελο TEMP να te δίσκο μνήμης RAM, επειδή μεταγλωττιστές συνήθως κάνει πολλή δουλειά με temp. Στην περίπτωσή μου αυτό μου έδωσε άλλο ένα 30% της ταχύτητας σύνταξη.

 

Είχα την ίδια ιδέα και έκανε κάποια έρευνα. Βρήκα τα παρακάτω εργαλεία που κάνουν ό, τι ψάχνετε για:


* [VSuite RAM δίσκο](http://www.romexsoftware.com/en-us/vsuite-ramdisk/)
* [DiskBoost](http://www.everstrike.com/ramdisk/)


Ωστόσο, η δεύτερη δεν μπορούσε να διαχειριστεί για να εργάζονται για 64-bit των Windows 7 σε όλα, και δεν φαίνεται να διατηρηθεί αυτή τη στιγμή.


Ο δίσκος VSuite RAM από την άλλη τα χέρια λειτουργεί πολύ καλά. Δυστυχώς δεν μπορούσα να μετρήσει οποιαδήποτε σημαντική αύξηση της απόδοσης σε σύγκριση με την [SSD](http://en.wikipedia.org/wiki/Solid-state_drive) δίσκο στη θέση του.

 

1. **Προφίλ.**  Βεβαιωθείτε ότι θα κάνετε καλό μετρήσεις της κάθε επιλογής. Μπορείτε να αγοράσετε ακόμη και πράγματα που έχετε ήδη απορριφθεί, μετρούν τους, και την επιστροφή τους, ώστε να γνωρίζετε εργάζεστε από καλά στοιχεία.
2. **Πάρτε μια πολλή μνήμη RAM.** 2 GB DIMMs είναι πολύ φθηνά? 4 GB DIMMs είναι λίγο πάνω από US $ 100 / ea, αλλά αυτό δεν είναι ακόμα πολλά χρήματα σε σύγκριση με το τι υπολογιστή κοστίσει μέρη μόλις πριν από λίγα χρόνια. Είτε θέλετε να καταλήξετε με ένα δίσκο μνήμης RAM ή απλά αφήνοντας το λειτουργικό σύστημα κάνει το πράγμα, αυτό θα βοηθήσει. Αν τρέχετε 32-bit των Windows, θα πρέπει να μεταβείτε σε 64-bit για να κάνουν χρήση του οτιδήποτε πάνω από 3 GB περίπου.
3. **Live Mesh** , μπορείτε να συγχρονίσετε από τον τοπικό δίσκο RAM σας στο cloud ή σε άλλον υπολογιστή, που σας δίνει μια up-to-ημερομηνία δημιουργίας αντιγράφων ασφαλείας.
4. **Μετακίνηση ακριβώς compiler εξόδους.** Κρατήστε τον πηγαίο κώδικα σχετικά με το πραγματικό φυσικό δίσκο, αλλά άμεση .obj, .dll και .exe αρχεία που θα δημιουργηθούν στη μονάδα δίσκου RAM.
5. **Σκεφτείτε μια [DVCS](https://en.wikipedia.org/wiki/Distributed_revision_control) .**  Κλώνος από το πραγματικό δίσκο σε ένα νέο χώρο αποθήκευσης στο δίσκο RAM. «ώθηση» οι αλλαγές σας πίσω στη μητρική συχνά, λένε κάθε φορά όλες οι δοκιμές σας περάσει.

 

Θα χρησιμοποιηθεί για να κάνει αυτό χρόνια πριν για μια [4ης γενιάς](https://en.wikipedia.org/wiki/Fourth-generation_programming_language) μακρο-compiler? αν βάλετε τα μακρο βιβλιοθήκης και την υποστήριξη των βιβλιοθηκών και τον κωδικό σας σε ένα δίσκο μνήμης RAM, τη σύνταξη της αίτησης (σε 80286) θα πάει από 20 λεπτά έως 30 δευτερόλεπτα.

 


> 
> Υπάρχουν πολλά RAMDrives γύρω, χρησιμοποιήστε ένα από αυτά. Δυστυχώς, αυτό θα ήταν απερίσκεπτο.
> 
> 
> 


Μόνο εάν εργάζεστε εξ ολοκλήρου στο δίσκο RAM, η οποία είναι ανόητο ..


Psuedo-ish σενάριο κελύφους, ramMake:



```
# setup locations
$ramdrive = /Volumes/ramspace
$project = $HOME/code/someproject

# ..create ram drive..

# sync project directory to RAM drive
rsync -av $project $ramdrive

# build
cd $ramdrive
make

#optional, copy the built data to the project directory:
rsync $ramdrive/build $project/build

```

Τούτου λεχθέντος, compiler σας μπορεί ενδεχομένως να το κάνετε αυτό χωρίς πρόσθετα σενάρια .. Ακριβώς αλλάξει κατασκευή θέση εξόδου σας σε ένα δίσκο μνήμης RAM, για παράδειγμα σε Xcode, είναι κάτω από Προτιμήσεις, κτίριο, «Τόπος Κατασκευάστηκε Προϊόντα σε:» και «Τόπος Intermediate Κατασκευάστηκε αρχεία σε:".

 

Τι μπορεί να είναι εξαιρετικά επωφελής για ακόμη ένα single-core μηχάνημα είναι παράλληλη κάνουν. Disk [I / O](http://en.wikipedia.org/wiki/Input/output) είναι μια πολύ μεγάλος παράγοντας στη διαδικασία κατασκευής. Αναπαραγωγής δύο περιπτώσεις compiler ανά πυρήνα επεξεργαστή μπορεί πραγματικά να αυξήσει την απόδοση. Ως ένας μεταγλωττιστής μπλοκ παράδειγμα σχετικά με I / O το άλλο μπορεί συνήθως πηδήξουν στη εντατική CPU μέρος του κατάρτιση.


Θα πρέπει να βεβαιωθείτε ότι έχετε τη μνήμη RAM για να υποστηρίξει αυτό (δεν θα πρέπει να είναι ένα πρόβλημα σε ένα σύγχρονο σταθμό εργασίας), διαφορετικά θα καταλήξετε εναλλαγή και ότι εξυπηρετεί το σκοπό.


Σε [GNU κάνει](https://en.wikipedia.org/wiki/Make_%28software%29#Derivatives) μπορείτε να χρησιμοποιήσετε μόνο `-j[n]`όπου `[n]`είναι ο αριθμός των ταυτόχρονων διαδικασιών με στόχο την αναπαραγωγή. Βεβαιωθείτε ότι έχετε το δικαίωμα δέντρο εξάρτησης σας πριν δοκιμάσετε αν και τα αποτελέσματα μπορεί να είναι απρόβλεπτη.


Ένα άλλο εργαλείο που είναι πραγματικά χρήσιμο (στην παράλληλη κάνουν μόδα) είναι [distcc](https://en.wikipedia.org/wiki/Distcc) . Λειτουργεί μια απόλαυση με GCC (αν μπορείτε να χρησιμοποιήσετε GCC ή κάτι με ένα παρόμοιο περιβάλλον γραμμής εντολών). distcc σπάει στην πραγματικότητα το έργο μεταγλώττισης με την προσποίηση να είναι ο compiler και ωοτοκίας εργασίες σε απομακρυσμένους διακομιστές. Μπορείτε να καλέσετε τον ίδιο τρόπο όπως θα καλέσει Συμβουλίου Συνεργασίας του Κόλπου, και μπορείτε να επωφεληθείτε από -j κάνουν για την επιλογή [n] για να καλέσετε πολλές διαδικασίες distcc.


Σε μια από τις προηγούμενες δουλειές μου, είχαμε μια αρκετά εντατική κατασκευή λειτουργικό σύστημα Linux που έγινε σχεδόν καθημερινά για ένα διάστημα. Προσθέτοντας σε ένα ζευγάρι των εξειδικευμένων μηχανημάτων κατασκευής και τη θέση distcc σε μερικές θέσεις εργασίας, να αποδεχθεί την κατάρτιση θέσεις εργασίας μας επέτρεψε να φέρει χρόνους κατασκευής κάτω από μισή μέρα για κάτω των 60 λεπτά για ένα πλήρες λειτουργικό σύστημα + userspace κατασκευής.


Υπάρχουν πολλά άλλα εργαλεία για την ταχύτητα συγκεντρώνει τις υπάρχουσες. Μπορεί να θέλετε να διερευνήσει περισσότερο από τη δημιουργία δίσκων RAM? κάτι το οποίο φαίνεται ότι θα έχουν πολύ μικρή αύξηση από το λειτουργικό σύστημα που κάνει την προσωρινή αποθήκευση στο δίσκο με μνήμη RAM. σχεδιαστές OS ξοδεύουν πολύ χρόνο να πάρει προσωρινή αποθήκευση σωστά για τα περισσότερα φόρτο εργασίας? είναι (συλλογικά) πιο έξυπνος από εσάς, έτσι δεν θα ήθελα να προσπαθήσουμε και να κάνουμε κάτι καλύτερο από αυτούς.


Αν έχετε μασήσει RAM για το δίσκο RAM, το λειτουργικό σύστημα έχει μνήμη RAM λιγότερη εργασίας για τα δεδομένα της μνήμης cache και να τρέξει τον κωδικό σας -> θα καταλήξετε με περισσότερα εναλλαγή και χειρότερα επιδόσεων δίσκου από τα άλλα (σημείωση: θα πρέπει Προφίλ αυτή την επιλογή πριν από τελείως την απόρριψη το).

 

Αναρωτιέμαι αν θα μπορούσε να χτίσει κάτι σαν ένα λογισμικό RAID 1, όπου έχετε ένα φυσικό δίσκο / κατάτμηση ως μέλος, και ένα κομμάτι της μνήμης RAM ως μέλος.


Σίγουρα με ένα κομμάτι της μικροαλλαγές και κάποια πραγματικά περίεργο διάταξη θα μπορούσε κανείς να πάρει το Linux για να γίνει αυτό. Δεν είμαι πεπεισμένος ότι θα ήταν αξίζει τον κόπο όμως.

 

Τελική λύση μου για το πρόβλημα είναι vmtouch: <https://hoytech.com/vmtouch/> 
Αυτό το εργαλείο κλειδώνει τον τρέχοντα φάκελο στο (ram) cache και vmtouch daemonizes στο παρασκήνιο.



```
sudo vmtouch -d -L ./

```

Βάλτε αυτό το κέλυφος rc για γρήγορη πρόσβαση:



```
alias cacheThis = 'sudo vmtouch -d -L ./'

```

Έψαξα για ένα έτοιμο σενάριο για αρκετό διάστημα, γιατί δεν θέλετε να χάνετε πολύ χρόνο για να γράφει τα δικά μου δίσκο ram-rsync-σενάριο. Είμαι σίγουρος ότι θα είχα χάσει κάποιες περιπτώσεις ακμής, η οποία θα ήταν πολύ δυσάρεστο και αν σημαντική κωδικό συμμετείχε. Και ποτέ δεν μου άρεσε η προσέγγιση των εκλογών.


Vmtouch φαίνεται σαν την τέλεια λύση. Επιπλέον, δεν σπαταλά μνήμη σαν ένα σταθερό ramdisk μέγεθος κάνει. Δεν έκανα ένα σημείο αναφοράς, διότι το 90% της πηγής μου 1gig + χτίσει φάκελος ήταν ήδη προσωρινής αποθήκευσης, αλλά τουλάχιστον αισθάνεται πιο γρήγορα?)

 

Η επιβράδυνση του δίσκου που θα προκύψουν, κυρίως γράψει, αλλά και ενδεχομένως λόγω ανίχνευσης ιών. Αυτό μπορεί να ποικίλει σε μεγάλο βαθμό μεταξύ ΛΣ πάρα πολύ.


Με την ιδέα που γράφει είναι πιο αργή, θα έμπαινα στον πειρασμό να στήσετε μια κατασκευή όπου το ενδιάμεσο (για παράδειγμα, `.o`αρχεία) και τα εκτελέσιμα πάρει εξόδου σε διαφορετική τοποθεσία, όπως μια μονάδα δίσκου RAM.


Θα μπορούσε στη συνέχεια να συνδεθεί αυτό το bin ενδιάμεσο φάκελο / την ταχύτερη μέσα μαζικής ενημέρωσης (χρησιμοποιώντας μια [συμβολική σύνδεση](http://en.wikipedia.org/wiki/Symbolic_link) ή [σημείο σύνδεσης NTFS](https://en.wikipedia.org/wiki/NTFS_junction_point) ).

 

Μερικές ιδέες από την κορυφή του κεφαλιού μου:


Χρησιμοποιήστε Sysinternals' [Διαδικασία Monitor](http://en.wikipedia.org/wiki/Process_Monitor) (δεν [Διαδικασία Explorer](https://en.wikipedia.org/wiki/Process_Explorer) ) για να ελέγξει τι συμβαίνει κατά τη διάρκεια μιας κατασκευής - αυτό θα σας αφήσει να δείτε αν `%temp%`χρησιμοποιείται, για παράδειγμα (να έχετε κατά νου ότι τα αρχεία απάντηση είναι πιθανόν να δημιουργηθεί με FILE\_ATTRIBUTE\_TEMPORARY που θα πρέπει να εμποδίζει δίσκο γράφει, αν είναι δυνατόν, αν και). Έχω μετακινηθεί μου `%TEMP%`σε ένα δίσκο μνήμης RAM, και αυτό μου δίνει μικρές επιταχύνσεις εν γένει.


Πάρτε ένα δίσκο μνήμης RAM που υποστηρίζει την αυτόματη φόρτωση / αποθήκευση εικόνων στο δίσκο, έτσι ώστε να μην χρειάζεται να χρησιμοποιούν scripts εκκίνησης για να γίνει αυτό. Διαδοχική ανάγνωσης / εγγραφής μιας ενιαίας εικόνας του δίσκου είναι ταχύτερη από ό, τι το συγχρονισμό πολλά μικρά αρχεία.


Τοποθετήστε συχνά χρησιμοποιούνται / μεγάλων αρχείων κεφαλίδα σας στο δίσκο RAM, και να παρακάμψετε πρότυπο μονοπάτια compiler σας για να χρησιμοποιήσετε τα αντίγραφα κίνησης RAM. Είναι πιθανόν δεν θα δώσει *ότι* ένα μεγάλο μέρος της βελτίωσης μετά την πρώτη φορά δημιουργεί, όμως, όπως το λειτουργικό σύστημα αποθηκεύει προσωρινά τις τυποποιημένες κεφαλίδες.


Διατηρήστε τα αρχεία σας πηγή στο σκληρό σας δίσκο, και να συγχρονίσετε στο δίσκο RAM - **και όχι το αντίστροφο** . Αναχώρηση [MirrorFolder](http://www.techsoftpl.com/backup/index.php) για να κάνει συγχρονισμό σε πραγματικό χρόνο μεταξύ φακέλων - επιτυγχάνει αυτό μέσω ενός οδηγού φίλτρου, έτσι συγχρονίζει μόνο ό, τι είναι απαραίτητο (και μόνο δεν αλλάζει - ένα 4 KB εγγραφής σε ένα αρχείο 2 GB θα προκαλέσει μόνο 4 KB εγγραφής στο φάκελο προορισμού ). Να καταλάβω πώς να κάνει σας [IDE](http://en.wikipedia.org/wiki/Integrated_development_environment) κατασκευής από το δίσκο RAM, αν και τα αρχεία προέλευσης είναι στο σκληρό δίσκο σας ... και να έχετε κατά νου ότι θα χρειαστείτε ένα **μεγάλο** δίσκο RAM για μεγάλα έργα.

 

Αυτό ακούγεται σαν προσωρινή αποθήκευση στο δίσκο που θα χειριστεί το λειτουργικό σας σύστημα και / ή το σκληρό δίσκο σας για σας αυτόματα (σε διαφορετικό βαθμό απόδοσης, κατά γενική ομολογία).


Η συμβουλή μου είναι, αν δεν σας αρέσει η ταχύτητα του δίσκου σας, να αγοράσετε ένα αυτοκίνητο υψηλής ταχύτητας καθαρά για λόγους κατάρτιση. Λιγότερο εργασίας από την πλευρά σας και να έχετε τη λύση για την κατάρτιση θλίψεις σας. 


Δεδομένου ότι το ζήτημα αυτό είχε αρχικά ζητηθεί, γυρίζοντας σκληροί δίσκοι έχουν γίνει άθλια χελώνες σε σύγκριση με SSDs. Είναι πολύ κοντά στο δίσκο RAM αρχικά ζητηθεί σε SKU που μπορείτε να αγοράσετε από Newegg ή το Amazon.

 

Ακριβώς όπως λέει ο James Curran, το γεγονός ότι τα περισσότερα προγράμματα ακολουθήσει το νόμο της τοπικότητας των αναφορών, η συχνή κώδικα και τη σελίδα δεδομένων καταμέτρηση θα μειωθεί σε βάθος χρόνου σε ένα διαχειρίσιμο μέγεθος της μνήμης cache του δίσκου OS.


RAM δίσκοι ήταν χρήσιμο όταν τα λειτουργικά συστήματα κτίστηκαν με περιορισμούς όπως παρ 'caches (Win 3.x, Win 95, DOS). Το πλεονέκτημα δίσκος RAM είναι κοντά στο μηδέν και αν ορίσετε πολλά RAM θα ​​πιπιλίζουν μνήμης που διαθέτει η διαχείριση μνήμης cache συστήματος, πληγώνει συνολική απόδοση του συστήματος. Ο κανόνας είναι: ας πυρήνα σας για να το κάνουμε αυτό. Αυτό είναι το ίδιο με το «ανασυγκρότηση της μνήμης» ή «βελτιστοποίηση» προγράμματα: αναγκάζουν πραγματικά σελίδων από την προσωρινή μνήμη (έτσι μπορείτε να πάρετε περισσότερη μνήμη RAM τελικά), αλλά προκαλεί το σύστημα να κάνει πολλά σελίδας προβληματική την πάροδο του χρόνου, όταν φορτωθεί τα προγράμματά σας να αρχίσει να ζητάει τον κωδικό / δεδομένα που σελιδοποίηση.


Έτσι, για μεγαλύτερη απόδοση, να πάρει ένα υποσύστημα υλικού γρήγορο δίσκο I / O, ίσως RAID, ταχύτερο επεξεργαστή, καλύτερη chipset (δεν VIA!), Περισσότερη φυσική μνήμη RAM, κ.λπ.

 