Δημοσιεύτηκε: 03 Δεκ 2011, 14:50
Προσωπικά δεν γενικολογώ και θέλω να πιστεύω πως επίσης δεν χάνω την ουσία. Θα σου δώσω 2 links για να βγάλεις τα συμπεράσματά σου:
GNU MP Bignum Library προφανώς για C (αλλά με wrappers/bindings και για άλλες γλώσσες )
GMP bignums vs. Python bignums: performance and code examples
Ερώτηση κρίσεως τώρα: ποια είναι η ουσία; η ταχύτητα παραγωγής, η ταχύτητα εκτέλεσης, η ακρίβεια στους υπολογισμούς, κάποιος ή κάποιοι συνδυασμοί τους; Αν η απάντηση είναι θετική για οποιονδήποτε συνδυασμό δεν περιλαμβάνει την ταχύτητα παραγωγής, τότε η χρήση της GNU MP Bignum Library φαντάζει μονόδρομος. Αν είσαι ήδη C programmer δεν έχεις απολύτως κανένα λόγο να πας σε Python μόνο και μόνο για να φτιάξεις μέσα στην Python wrapper σε C που θα χρησιμοποιεί την gmplib για να κατεβάσεις το execution time (στο παράδειγμα του 2ου link κατέβασε τον χρόνο εκτέλεσης κατά 86% ... συγκριτικά με NumPy δεν ξέρω αν και τι gain υπάρχει, δεν ξέρω καν αν η NymPy έχει όριο στο precision... στην gmplib το ορίζεις εσύ όσο θέλεις, με όριο τη διαθέσιμη μνήμη του συστήματός σου).
Σε ότι αφορά την παραγωγικότητα, την 1η φορά θα φας κάποιο χρόνο να φτιάξεις περίπλοκες συναρτήσεις που ενδεχομένως δεν καλύπτονται από τις έτοιμες της gmplib... άπαξ και τις φτιάξεις όμως, δεν σε εμποδίζει κανείς να τις ενσωματώσεις στη βιβλιοθήκη (ή να τις κάνεις ξεχωριστή) και όποια επόμενη φορά τις χρειαστείς δεν θα χρειάζεται να τις ξαναγράφεις, απλά θα τις καλείς.
Btw, η τυπική διαδικασία καλέσματος μιας οποιασδήποτε βιβλιοθήκης, π.χ. libmine.a είναι...
GNU MP Bignum Library προφανώς για C (αλλά με wrappers/bindings και για άλλες γλώσσες )
GMP bignums vs. Python bignums: performance and code examples
Ερώτηση κρίσεως τώρα: ποια είναι η ουσία; η ταχύτητα παραγωγής, η ταχύτητα εκτέλεσης, η ακρίβεια στους υπολογισμούς, κάποιος ή κάποιοι συνδυασμοί τους; Αν η απάντηση είναι θετική για οποιονδήποτε συνδυασμό δεν περιλαμβάνει την ταχύτητα παραγωγής, τότε η χρήση της GNU MP Bignum Library φαντάζει μονόδρομος. Αν είσαι ήδη C programmer δεν έχεις απολύτως κανένα λόγο να πας σε Python μόνο και μόνο για να φτιάξεις μέσα στην Python wrapper σε C που θα χρησιμοποιεί την gmplib για να κατεβάσεις το execution time (στο παράδειγμα του 2ου link κατέβασε τον χρόνο εκτέλεσης κατά 86% ... συγκριτικά με NumPy δεν ξέρω αν και τι gain υπάρχει, δεν ξέρω καν αν η NymPy έχει όριο στο precision... στην gmplib το ορίζεις εσύ όσο θέλεις, με όριο τη διαθέσιμη μνήμη του συστήματός σου).
Σε ότι αφορά την παραγωγικότητα, την 1η φορά θα φας κάποιο χρόνο να φτιάξεις περίπλοκες συναρτήσεις που ενδεχομένως δεν καλύπτονται από τις έτοιμες της gmplib... άπαξ και τις φτιάξεις όμως, δεν σε εμποδίζει κανείς να τις ενσωματώσεις στη βιβλιοθήκη (ή να τις κάνεις ξεχωριστή) και όποια επόμενη φορά τις χρειαστείς δεν θα χρειάζεται να τις ξαναγράφεις, απλά θα τις καλείς.
Btw, η τυπική διαδικασία καλέσματος μιας οποιασδήποτε βιβλιοθήκης, π.χ. libmine.a είναι...
- Κώδικας: Επιλογή όλων
...
#include "mylib.h"
...
/* κάλεσμα οποιασδήποτε συνάρτησης, τύπου, σταθεράς, κλπ της βιβλιοθήκης */
...
- Κώδικας: Επιλογή όλων
gcc myprog.c -o myprog.out -lmine