Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Дивная игра мудреца Однажды Мудрец придумал игру, и показал её Царю. Царь заинтересовался игрой и пообещал вознаградить Мудреца, если он научит в неё играть. Игровое поле состояло из 30-х клеток, расположенных в 6-ти рядах по 5 клеток в каждом. Мудрец согласился научить Царя премудростям игры, если Царь даст ему столько зёрен пшеницы, сколько получится, если заполнить все клетки... https://www.cyberforum.ru/ csharp-beginners/ thread1946506.html C# Движение объекта на panel. Изменение направления при нажатии кнопки
Дело такое, есть круг, при нажатии кнопки "Старт" он начинает двигаться на право, и при этом у него цвет ЗЕЛЕНЫЙ, при нажатии "Стоп" он останавливается. Это я реализовал. Теперь мне нужно сделать так, что если я нажму на кнопку "Налево" то круг с того же места где он остановился начинает движение налево, при этом его цвет меняется на КРАСНЫЙ. ВОТ это FORM1. using System; using...
C# Messagebox.show Как вывести результат Console.WriteLine("key={0} volue={1}", i, dict); в messagebox public static Dictionary<int, string> mydict() { Dictionary<int, string> dict = new Dictionary<int, string>(); int i; for (i= 0; i < 10; i++) { string s = i.ToString(); https://www.cyberforum.ru/ csharp-beginners/ thread1946498.html C# Торт и свечи https://www.cyberforum.ru/ csharp-beginners/ thread1946497.html
Здравствуйте, есть программка, условие которой звучит следующий образом: На квадратном торте N свечей. Можно ли одним прямолинейным разрезом разделить его на две равные по площади части, одна из которых не содержала бы ни одной свечи? Свечи будем считать точками, у которых известны их целочисленные координаты Х, Y; ...; Х, Y (начало координат - в центре торта); разрез не может проходить через...
Как сделать динамический array? C#
то есть, мне нужно что то вроде такого: char array = new char; Console.WriteLine("Введите слово которое вы хотите проверить палиндромом ли оно"); то есть что бы длина массива была в зависимости от слово которого введет user вот как выглядит мой код, но теперь мне нужно изменить его так как я написала выше public void CheckPolindrome() { char array = new char; ...
C# Массивы задач В общем, необходимо распараллелить генерацию и обработку массива данных. Почитал про задачи, потоки, TPL, вроде бы проникся, начал писать непосредственно код, и столкнулся с проблемами (код привожу обобщенный). List<Point> startValues; List<Task> taskList; int N; void Init()//инициализирую { startValues = new List<Point>(); ... https://www.cyberforum.ru/ csharp-beginners/ thread1946410.html
C# Как определить какой элемент JavaScript запускается на странице при клике и запустить его? https://www.cyberforum.ru/ csharp-beginners/ thread1946401.html
Код страницы состоит сверху из кучи javascript такого типа <script type="text/javascript" src="/gen/js/ru/_core/c.account_1486726596.js"></script> Когда я навожу мышь на элемент, описываемый кодом <canvas class="town-canvas" id="town-canvas" width="1006" height="800"></canvas> название класса меняется на town-canvac-hower Когда кликаю на него, появляется в коде страницы строки, описываемые...
Часть 1. Делаем смену mac адреса на c# C#
Всем привет! Многие говорят что на шарпе поменять адреса мака просто не возможно, но господа, давайте будем честными. Изменить мак адрес сетевого адаптера, можно на шарпе, многие не понимают как это сделать, и говорят обратное. Сегодня я вам покажу как это делается, на как вы говорите г0вн0 шарпе, если вы считаете что только дельфин способен реализовать такое, то вы глубоко...
C# На каком языке писать DLL? Уважаемые знатоки С# подскажите на каком языке более оптимально сделать DLL, чтобы потом эту DLL без проблем использовать для С#WPF. Пред история Имеется XXX.dll c XXX.h (написана на Си ) , делается AAA.dll - обертка (покаместь на С++ ) для доступа к ХХХ.dll , т.е. типа такой прослойки между XXX.dll и С#WPF https://www.cyberforum.ru/ csharp-beginners/ thread1946294.html C# Найти наибольшее среднее арифметическое положительных элментов в строке Уважаемые программисты,объясните чайнику, как посчитать наибольшее среднее положительных элементов в строке и вывести его?? В моем коде выводится только строка с элементами из которых находится наибольшее среднее, а вот как вывести это среднее не понимаю:umbrage:.. Прилагаю код.. using System; using System.Collections.Generic; using System.Linq; using System.Text; https://www.cyberforum.ru/ csharp-beginners/ thread1946262.html
Как связать несколько компьютеров через сокеты? C#
IPAddress IP = IPAddress.Parse("127.0.0.1"); IPEndPoint EndP = new IPEndPoint(IP, 7777); При использовании вместо 127.0.0.1 (Или другого любого IP, через который можно связываться локально) Ip, взятого с сайта 2ip.ru выходит ошибка. Что я делаю не та
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
27.03.2017, 08:41 0

Оптимизация производительности C#.NET (Алгоритм, Многопоточность, Debug, Release, .Net Core, Net Native) - C# - Ответ 10260661

27.03.2017, 08:41. Показов 4667. Ответов 19
Метки (Все метки)

Ответ

Цитата Сообщение от bedvit Посмотреть сообщение
n = 100000;
Цитата Сообщение от bedvit Посмотреть сообщение
Итого 84 решения.
Не срастается...
Код
╨Ч╨░╨┤╨░╨╣╤В╨╡ ╨┤╨╕╨░╨┐╨░╨╖╨╛╨╜ ╤А╨░╤Б╤З╨╡╤В╨░ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е, ╨┤╨╛..., ╨╜╨░╨╢╨╝╨╕╤В╨╡ Enter: 100000
1   6   8   9
2   71   138   144
3   135   138   172
4   236   1207   1210
5   242   720   729
6   372   426   505
7   575   2292   2304
8   426   486   577
9   566   823   904
10   791   812   1010
11   1124   5610   5625
12   1851   8675   8703
13   1943   6702   6756
14   1943   11646   11664
15   1938   2820   3097
16   2196   5984   6081
17   2676   3230   3753
18   3086   21588   21609
19   3453   24965   24987
20   3318   16806   16849
21   4607   36840   36864
22   6560   59022   59049
23   7251   49409   49461
24   7676   11903   12884
25   8999   89970   90000
26   10230   37887   38134
27   10866   17328   18649
28   15218   66198   66465
29   17328   27630   29737
30   17384   78244   78529
31   25765   33857   38239
32   28182   31212   37513
33   29196   66167   68010
34   32882   69479   71852
35   31212   34566   41545
36   34199   46212   51762
37   51293   64165   73627
38   54101   56503   69709
39   58462   87383   95356
╨Т╤А╨╡╨╝╤П ╨▓╤Л╤З╨╕╤Б╨╗╨╡╨╜╨╕╤П: 00:00:08.7553762
╨Я╤А╨╛╨│╤А╨░╨╝╨╝╨░ ╨╖╨░╨▓╨╡╤А╤И╨╡╨╜╨░. ╨Э╨░╨╢╨╝╨╕╤В╨╡ Enter ╨┤╨╗╤П ╨▓╤Л╤Е╨╛╨┤╨░...
Добавлено через 11 часов 14 минут
bedvit, еще немного оптимизировал текущий алгоритм, ниже результат на 8 и 4 ядрах:
Код
1 6,5317791
2 6,3221177
3 6,243117
4 6,2358343
5 6,2946634
6 6,4695762
7 6,1462388
8 6,4305404
9 6,3767552
10 6,4534968

1 4,4163211
2 3,9745174
3 3,9574649
4 3,9847986
5 4,017022
6 3,9952074
7 4,0651204
8 4,0272239
9 3,9591864
10 3,9934772
Код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Text;
using System.Linq;
using System.Runtime.CompilerServices;
 
namespace ConsoleApplication1
{
    //поиск переменных для решения уравнения x^3 + y^3 = z^3 - 1
    class Program
    {
        static TaskCompletionSource<object> source = new TaskCompletionSource<object>();
        static TaskScheduler scheduler = new CustomTaskScheduler();
 
        static long n;
        static long n3;
        static long[] a;
        static int threadsN = 4;
        //static StringBuilder _sb = new StringBuilder();
        static List<Test> listTest = new List<Test>(100);
 
        static void Main(string[] args)
        {
            for (int j = 0; j < 10; j++)
            {
                Stopwatch sw = Stopwatch.StartNew();
                //n = (long)Math.Pow(long.MaxValue, (1d / 3d));
                n = 100000;
                n3 = n * n * n;
                a = new long[n + 1];
 
                for (long i = 1; i <= n; i++)
                    a[i] = i * i * i;
 
                var task = new Task[threadsN];
                for (int i = 2; i - 2 < threadsN; i++)
                {
                    int k = i;
                    task[k - 2] = Func(k);
                }
 
 
                Task.WaitAll(task);
                sw.Stop();
 
                //Console.WriteLine(_sb.ToString().TrimEnd('\n'));
                //Console.WriteLine(string.Join("\n", listTest.Select(l => $"{l.Prop1} {l.Prop2} {l.Prop3}")));
                Console.WriteLine((j + 1) + " " + sw.Elapsed.TotalSeconds);
                //_sb = new StringBuilder();
            }
 
            Console.ReadLine();
        }
 
        static async Task Func(long start)
        => await Task.Run(() =>
        {
            long m = n;
 
            for (long x = start; x <= Math.Round(Math.Pow((n3 - 1) / 2, 1d / 3d)); x = x + threadsN)
            {
                long ax = a[x];
 
                while (a[m] > n3 - ax - 1)
                    m--;
 
                long z = 1;
                for (long y = x; y <= m; y++)
                {
                    long z3 = ax + a[y] + 1;
 
                    for (long az = a[z]; az <= z3; z++, az = a[z])
                    {
                        if (az == z3)
                        {
                            //Console.WriteLine(x + "   " + y + "   " + z);
                            //_sb.Append(x).Append(" ").Append(y).Append(" ").Append(z).Append(Environment.NewLine);
 
                            Test test = new Test { Prop1 = x, Prop2 = y, Prop3 = z };
                            listTest.Add(test);
                        }
                    }
                }
            }
        }).ConfigureScheduler(scheduler);
    }
 
    class Test
    {
        public long Prop1 { get; set; }
        public long Prop2 { get; set; }
        public long Prop3 { get; set; }
    }
 
    public struct CustomTaskAwaitable
    {
        CustomTaskAwaiter awaitable;
 
        public CustomTaskAwaitable(Task task, TaskScheduler scheduler)
        {
            awaitable = new CustomTaskAwaiter(task, scheduler);
        }
 
        public CustomTaskAwaiter GetAwaiter() { return awaitable; }
 
        public struct CustomTaskAwaiter : INotifyCompletion
        {
            Task task;
            TaskScheduler scheduler;
 
            public CustomTaskAwaiter(Task task, TaskScheduler scheduler)
            {
                this.task = task;
                this.scheduler = scheduler;
            }
 
            public void OnCompleted(Action continuation)
            {
                task.ContinueWith(x => continuation(), scheduler);
            }
 
            public bool IsCompleted { get { return task.IsCompleted; } }
            public void GetResult() { }
        }
    }
 
    public static class TaskExtension
    {
        public static CustomTaskAwaitable ConfigureScheduler(this Task task, TaskScheduler scheduler)
        {
            return new CustomTaskAwaitable(task, scheduler);
        }
    }
 
    public class CustomTaskScheduler : TaskScheduler
    {
        protected override IEnumerable<Task> GetScheduledTasks() { yield break; }
        protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) { return false; }
        protected override void QueueTask(Task task)
        {
            TryExecuteTask(task);
        }
    }
}

Цитата Сообщение от bedvit Посмотреть сообщение
вы тоже через Console .Net Core
Да верно.
// *************
Нужно вкорне менять подход, т.к. переборы от 1 до нужного числа, не есть хороше. Возможно, стоит посмотреть в сторону деревьев или поискать другое решение.

Не по теме:

Вчерашний комент связан с недопониманием :)



Вернуться к обсуждению:
Оптимизация производительности C#.NET (Алгоритм, Многопоточность, Debug, Release, .Net Core, Net Native) C#
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2017, 08:41
Готовые ответы и решения:

Объясните на пальцах совместимость библиотек в .Net Core, .Net Framework, .Net Standart
Изучаю .Net. Хочу написать некое серверное приложение (думаю что учеба лучше на реальном примере,...

Разница между ASP.NET Core 2, ASP.NET Core MVC, ASP.NET MVC 5 и ASP.NET WEBAPI 2
Здравствуйте. Я в бекенд разработке полный ноль. В чем разница между вышеперечисленными...

Сравнение производительности MariaDb и PostgreSql на .NET CORE
Решил присоединиться к кроссплатформенной разработке на .NET CORE и переписать одно из API на...

ASP.NET Core. Старт - что нужно знать, чтобы стать ASP.NET Core разработчиком?
Попалось хор краткое обзорное видео 2016 года с таким названием - Что нужно знать, чтобы стать...

19
27.03.2017, 08:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2017, 08:41
Помогаю со студенческими работами здесь

Библиотека NETSquirrel для .NET и .NET Core - формат вывода индексаторов
Предположим, что мы выводим через AutoPrintLine все поля, свойства и индексаторы экземпляра...

Можно ли использовать сборку из .NET Core в обычном ASP .NET проекте ?
Microsoft.Extensions.Logging очень удобная штука, в обычном .NET её никак нельзя задействовать ?...

Можно ли использовать библиотеки написанные на .net Core для .net FW
Можно ли подключить библиотеку написанную на .net Core к WinForm приложению написанному на .net FW?...

Как подключить к ConsoleApp(.Net Core) библиотеку (.Net Standart)
Привет товарищи!) Решил чутка по изучать нововведения(ну лично для меня ConsoleApp(.Net Core) и...

Библиотека NETSquirrel для .NET и .NET Core - решение задач
Тема для решения задач с применением NETSquirrel. Просьба вопросы и замечания писать здесь.

ASP.NET .NET Core Web Api -- почему параметры всегда null?
Что я делаю не так? using Microsoft.AspNetCore.Mvc; namespace WebApiServer.Controllers { ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru