Найти - Пользователи
Полная версия: Доступно обяснить как работают подпрограммы
Начало » Флейм » Доступно обяснить как работают подпрограммы
1 2
Etayson
Здравствуйте.
Есть исходники подпрограмм для программы майнера на питоне.
Вот ссылка: https://github.com/ethereum/wiki/wiki/Ethash
К сожалению, я не владею этим языком программирования.
Хочу эти подпрограммы перевести на Purebasic.
Часть я сделал, но часть для меня вообще загадка из-за синтаксиса питона.
Может кто-то за определенную плату, рассказать мне как работают эти подпрограммы. Какие данные используются и т.д. ?

ZerG
я думаю достаточно почитать первую главу любой книги по питону и все станет понятно.
Etayson
ZerG
я думаю достаточно почитать первую главу любой книги по питону и все станет понятно.
Если бы всё так просто было…
Я даже в среде питон не могу запустить их, постоянно какие-то ошибки вылазят, то чего-то encode надо сделать, то наоборот.. Мрак во общем. Так что никто не сможет объяснить?
Меня ни столько сами функции смущают, сколько возвращаемые значения..
Например:
def hashimoto_full(full_size, dataset, header, nonce):
return hashimoto(header, nonce, full_size, lambda x: dataset)

Откуда 5й параметр x берется, если hashimoto_full вызывается только с 4мя параметрами?
ZerG
Так все го то надо посмотреть пару непонятных моментов.
Например в данном случае посмотрите lambda

lambda x: dataset — это и есть 4 член.
Etayson
Во общем, разобрался я со всем.
Но скорость питона просто поражает… очень-очень медленный
Если делать майнер на питоне то можно и неделю ждать пока DAG сделается.
helm2004
PyPy в помощь.
Etayson
helm2004
PyPy в помощь.
Читаю про PyPy..
cnt = 10 * 1000 * 1000
for _ in xrange(cnt):
i = i + 1



5.8млн операций сложения в секунду на обычном СPython 2.6 (python test.py)
42.5млн операций в секунду на PyPy 1.2 (pypy test.py)

смешно..я на пурике сделал тот же тест за 22мс, т.е.1000/22=45,45 Умножаем на 10 000 000 и получаем, что за 1с 450млн операций. А точнее 455млн операций сложений в сек. И это при работающем 3д максе, на котором шел рендер. Так что PyPy не далеко от питона.
OpenConsole(“bla-bla”)
cnt=10*1000*1000
i=0
StartTime = ElapsedMilliseconds()
For j=0 To cnt
i=i+1
Next j
PrintN(“Elapced time:”+Str(ElapsedMilliseconds()-StartTime)+“ms”)
Input()
4kpt_IV
Etayson
Purebasic

Боже. Оно еще живое? Никак не сдохнет?

Все это основные преимущества PureBasic`а,но надо заметить, что он не является бесплатным. Ограниченную версиюможно скачать бесплатно с сайта разработчиков purebasic.com,но она не позволит компилировать программу в машинный код и выполнять программу длиннее800 строк, полная же версия стоит 99$.

Да пусть меня поцелуют в одно место все разрабы этого “шикарного” языка..
ZerG
каждому линкорну своя торпеда.
doza_and
Etayson
я на пурике сделал тот же тест за 22мс
Etayson
И это при работающем 3д максе
:) :) :) Мастерство тестирования быстродействия впечатляет.

А я вот тут на отстойном C++ сделал тест
#include <iostream>
#define __MSVC__
#include <rdtsc.h>
using namespace std;
int main()
{
    unsigned long long t0,t1;
    t0=rdtsc();
    for(int j=0;j<1000000000;++j);
    t1=rdtsc();
    cout<<double(t1-t0)<<endl;
    return 0;
}
И он выполняется за 28 машинных тактов. Те за 0.3 наносекунды или в 200 миллионов раз быстрее чем на вашем бейсике. И какой из этого следует вывод?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB