Jump to content
kaif

Определение тренда

Recommended Posts

DIMtrade

GUID скорость конечно упала, медленная штука. 0.7 млн сек на 1 потоке и 3 млн в сек на 8 потоках, не пойму почему рандом не хочет работать, теоретически можно было бы достичь более 100 млн в сек на нем))))


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
Player 2
1 minute ago, DIMtrade said:

, не пойму почему рандом не хочет работать,

Код покажешь?

Share this post


Link to post
Share on other sites
kaif

Думаю, дело не в рандоме. Как Вы считаете число итераций? В отдельных переменных или в общей какой-нибудь?


механическая торговая система на основе индикатора AT-линий
описание торговой стратегии LTR-AUTO, хроника событий
Docendo discimus

Share this post


Link to post
Share on other sites
DIMtrade
4 минуты назад, Player 2 сказал:

Тогда может дело в алгоритме оценки скорости.

 

обычный Stopwatch использую, негде там ошибиться засекаем время старта и финиша делим на число итераций


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade
1 минуту назад, kaif сказал:

Думаю, дело не в рандоме. Как Вы считаете число итераций? В отдельных переменных или в общей какой-нибудь?

Одна стат переменная, которая считает количество вызовов функции, она локируется, доступ к ней имеет только 1 поток одновременно.

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
kaif

Лучше сделать 8 переменных. А потом сложить результат.

Иначе потоки будут друг друга ожидать. ИМХО.

К чему вообще эта переменная?

Задайте фиксированный цикл. А потом умножьте на 8 его размер.

Edited by kaif

механическая торговая система на основе индикатора AT-линий
описание торговой стратегии LTR-AUTO, хроника событий
Docendo discimus

Share this post


Link to post
Share on other sites
Player 2

А что за функция замеряется? Та которая Gauss от Кайфа? У меня она прогналась со скоростью 15 млн в секунду в одном потоке. И это на старом компе.

В 8 потоков - 75 млн. Разница в 5 раз, что близко к тому что я обычно и получаю.

Edited by Player 2

Share this post


Link to post
Share on other sites
DIMtrade
2 минуты назад, Player 2 сказал:

А что за функция замеряется? Та которая Gauss от Кайфа? У меня она прогналась со скоростью 15 млн в секунду в одном потоке. И это на старом компе.

Да, у меня такая же скорость на 1 потоке, а вот на 8 меньше чем на 1 потоке. Причем с GUID все работает корректно и если этот Random в самой функции инициализировать  -  то тоже все корректно, скорость падает, но на 8 потоках работает в 8 раз быстрее.


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade

Может потому что я задаю так, т.е. у меня рандом в листе, равном числу потоков которые хочу использовать

 

      private void InitRandom()
        {
            _Random = new List<Random>();

            for (int i = 1; i <= cores; i++)
            {
                _Random.Add(new Random());
            }
        }


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
Player 2
4 minutes ago, DIMtrade said:

Да, у меня такая же скорость на 1 потоке

Но у тебя комп круче, вот что меня смущает.

 

3 minutes ago, DIMtrade said:

Может потому что я задаю так, т.е. у меня рандом в листе, равном числу потоков которые хочу использовать

Тут проблема только в качестве генерации случайных чисел - они будут одинаковые у всех потоков. В остальном ничего плохого не вижу.

Share this post


Link to post
Share on other sites
DIMtrade
3 минуты назад, Player 2 сказал:

Но у тебя комп круче, вот что меня смущает.

 

Тут проблема только в качестве генерации случайных чисел - они будут одинаковые у всех потоков. В остальном ничего плохого не вижу.

Ну 16016767 per sec вылезает в 1 потоке, т.е. 16 млн, может 1 млн сверху это и есть мощный комп)))

Не пойму почему не 150 млн в сек на 8 потоках

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
Player 2
3 minutes ago, DIMtrade said:

может 1 млн сверху это и есть мощный комп))) 

Нет, это слишком мало. Разница должна быть больше. У меня Core i7 950, он года на 3-4 раньше твоего вышел.

Попробуй этот код прогнать:

        private Random random = new Random();
        private double Gauss()
        {
            double u = 0;
            double v = 0;
            double s = 0;
            while (true)
            {
                u = 2 * random.NextDouble() - 1;
                v = 2 * random.NextDouble() - 1;
                s = u * u + v * v;
                if (s == 0 || s > 1) continue;
                return u * Math.Sqrt(-2 * Math.Log(s) / s);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int st = Environment.TickCount;
            double d = 0;
            int totalC = 15000000;
            for (int i = 0; i < totalC; i++)
            {
                d += Gauss();
                d -= Gauss();
                d += Gauss();
                d -= Gauss();
                d += Gauss();
                d -= Gauss();
                d += Gauss();
                d -= Gauss();
                d += Gauss();
                d -= Gauss();
            }
            st = Environment.TickCount - st;
            double res = totalC * 10 / ((double)st / 1000);
            Text = "value=" + d.ToString() + " speed= " + res.ToString() + " / sec";
        }

 

Share this post


Link to post
Share on other sites
DIMtrade

Ну лок еще убрал в своем коде получилось 20 млн.

Щас попробую твой


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade

03:43:37 value=-2847,97335290527 speed= 23470505,3982162 / sec

Это твой код

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade

Можешь его на 8 потоков разбить, вот тут про потоки на рандоме отдельно написано и пример есть, не пойму почему у меня он в потоках дает меньшую скорость

https://docs.microsoft.com/ru-ru/dotnet/api/system.random?view=netframework-4.7.2

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade

В принципе вышел на значения как в твоем коде в 1 потоке, но вот в 8 потоках фигня.


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
Player 2
5 minutes ago, DIMtrade said:

03:43:37 value=-2847,97335290527 speed= 23470505,3982162 / sec

Это твой код

Это уже лучше.

 

4 minutes ago, DIMtrade said:

Можешь его на 8 потоков разбить

Вот:

        private double Gauss(Random random)
        {
            double u = 0;
            double v = 0;
            double s = 0;
            while (true)
            {
                u = 2 * random.NextDouble() - 1;
                v = 2 * random.NextDouble() - 1;
                s = u * u + v * v;
                if (s == 0 || s > 1) continue;
                return u * Math.Sqrt(-2 * Math.Log(s) / s);
            }
        }

        double sdls = 0;
        private void ThreadFunctionx()
        {
            double d = 0;
            Random random = new Random();
            for (int i = 0; i < 15000000; i++)
            {
                d += Gauss(random);
                d -= Gauss(random);
                d += Gauss(random);
                d -= Gauss(random);
                d += Gauss(random);
                d -= Gauss(random);
                d += Gauss(random);
                d -= Gauss(random);
                d += Gauss(random);
                d -= Gauss(random);
            }
            sdls += d;
        }

        private void MultiThreadProcessing()
        {
            int threadCount = 8;
            Thread[] threads = new Thread[threadCount];
            for (int i = 0; i < threads.Length; i++)
            {
                threads[i] = new Thread(ThreadFunctionx);
            }
            // Запускаем потоки.
            for (int i = 0; i < threadCount; i++)
            {
                threads[i].Start();
            }
            // Ждем завершения потоков.
            for (int i = 0; i < threadCount; i++)
            {
                threads[i].Join();
            }
        }


        private unsafe void button2_Click(object sender, EventArgs e)
        {
            int st = Environment.TickCount;
            MultiThreadProcessing();
            int totalC = 15000000;
            st = Environment.TickCount - st;
            double res = totalC * 10 * 8 / ((double)st / 1000);
            Text = "value=" + sdls.ToString() + " speed= " + res.ToString() + " / sec";
        }

Обрати внимание что функция Gauss здесь другая и принимает Random.

Share this post


Link to post
Share on other sites
DIMtrade

 value=135822,569506022 speed= 113442994,895065 / sec

Т.е. твой код работает, буду смотреть в чем у меня причина.

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade

Сделал как у тебя, стал рандом передавать как параметр в функцию Гаусс, потоки заработали, скорость выросла до 71 млн в сек, но все рано меньше твоей.
Я кстати использую BackgroundWorker, это может быть причиной меньшей скорости?


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade

Может еще разница в том, что я цикл полный гоняю, а ты в одной итерации цикла 10 раз функцию вызываеш?

Upd. Сделал и тут как у тебя, стал в цикле вызывать 10 раз и итерации цикла уменьшил в 10 раз - вауля скорость 90млн в сек

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
Player 2
27 minutes ago, DIMtrade said:

speed= 113442994,895065 / sec

4.83 раза.

У меня 79633685 в 8 потоках, в одном 15046644, разница 5.29 раз. Твой комп в многопоточном режиме быстрее на 42% чем мой. Мне новый пока рано покупать.

 

15 minutes ago, DIMtrade said:

Я кстати использую BackgroundWorker, это может быть причиной меньшей скорости?

Может, но думаю что это не должно сильно влиять. Это не простой поток, у него есть дополнительные функции, и они могут давать снижение скорости. Я точно не знаю насколько они влияют.

 

11 minutes ago, DIMtrade said:

Может еще разница в том, что я цикл полный гоняю, а ты в одной итерации цикла 10 раз функцию вызываеш?

И это тоже, но тут я думаю разница будет очень небольшой.

Edited by Player 2

Share this post


Link to post
Share on other sites
DIMtrade

У меня еще комп загружен, сейчас попробую на чистый твой код запустить, все закрою


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
Player 2
3 minutes ago, DIMtrade said:

У меня еще комп загружен, сейчас попробую на чистый твой код запустить, все закрою

А ты оптимизацию кода включил?

Share this post


Link to post
Share on other sites
DIMtrade
1 минуту назад, Player 2 сказал:

А ты оптимизацию кода включил?

Да, включил. Закрыл все приложения, браузер и запустил

04:28:35 value=151035,02471313 speed= 126943827,356395 / sec
04:28:50 value=167890,647561792 speed= 125904941,768964 / sec
04:29:00 value=298102,798885625 speed= 127781918,858482 / sec

Возросла до 126 в сек


Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites
DIMtrade
14 минут назад, Player 2 сказал:

Твой комп в многопоточном режиме быстрее на 42% чем мой. Мне новый пока рано покупать.

Я свой купил в 2012 году, 7 лет назад))))

Нужно попросить прогнать тот код кого - нибудь у кого комп последнего поколения


Ну в общем пока что c# уделывает delphi, но боюсь Кайф такой же программист как и я и его скорость намного ниже реальной которую можно выжать))))

Edited by DIMtrade

Платформа для построения ТС и исследования рынка. Бьёт белке в глаз.
Мониторинг Myfxbook.comОсновная ПАММ ветка

Не использую мартингейл, усреднения, сетки, локи и пересиживание

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×