powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инициализация статического класса
25 сообщений из 279, страница 7 из 12
Инициализация статического класса
    #39811492
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachно, есть же случаи, когда у кого-то, когда это не подходит :)
причины неиспользования срорее другие
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811497
WebPrj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
love_bachкороче, я против статиков, я за IoC, но, есть же случаи, когда у кого-то, когда это не подходит :)
А как вы напишете это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// mathematical.hpp
 
namespace Constants
{
  inline constexpr double pi{ 3.14159 };
  inline constexpr double avogadro{ 6.0221413e23 };
  inline constexpr double my_gravity{ 9.2 };
}
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811504
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebPrjlove_bachкороче, я против статиков, я за IoC, но, есть же случаи, когда у кого-то, когда это не подходит :)
А как вы напишете это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// mathematical.hpp
 
namespace Constants
{
  inline constexpr double pi{ 3.14159 };
  inline constexpr double avogadro{ 6.0221413e23 };
  inline constexpr double my_gravity{ 9.2 };
}



скорее всего не на C#
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811510
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatА сallvirt ничего не означает - он используется для вызова любого инстанс-метода, хоть виртуального, хоть нет.
Кстати, нет. Вызов прямо на результате конструктора приводит к использованию call вместо callvirt:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System;
namespace test2
{
  class Program
  {
    public static void Main(string[] args)
    {
      new Program().Foo();
    }
    public void Foo() => Console.WriteLine("done");
  }
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
.method public hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Размер кода:       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  newobj     instance void test2.Program::.ctor()
  IL_0006:  call       instance void test2.Program::Foo()
  IL_000b:  nop
  IL_000c:  ret
} // end of method Program::Main


Оппонент просто какбы намекает, что если вдруг с какого-то мегаперепоя корвалолом все инстанстные вызовы заменятся на статики, то будет массовая замена вызовов callvirt на call. Цена замены - несколько тиков. В масштабах страны, сами понимаете результат.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811511
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachfkthatпропущено...

Первый же запрос к i/o (БД, хттп, файловая система) накроет все дополнительные расходы на виртуальные вызовы, DI и подобное, как бык овцу.

ну, есть же поддержка async в проваедерах БД, хттп...
Асинк как-то ускорит выполнение самого запроса?
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811512
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatlove_bachпропущено...


ну, есть же поддержка async в проваедерах БД, хттп...
Асинк как-то ускорит выполнение самого запроса?Не, только если на Go переписать :)
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811522
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ололо, оптимизаторы тактов вызова метода. Объясняйте мне тогда вот это:
Код: 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.
    internal class Program
    {
        private static void Static()
        {
        }

        private static void Main(string[] args)
        {
            var prog = new Program();
            var n = 100500000;
            Console.WriteLine("Static:     {0}", Measure(() => Repeat(n, Static)));
            Console.WriteLine("Not static: {0}", Measure(() => Repeat(n, prog.NotStatic)));
        }

        private static void Repeat(int n, Action action)
        {
            for (var i = 0; i < n; i++)
            {
                action();
            }
        }

        private static TimeSpan Measure(Action action)
        {
            var sw = new Stopwatch();
            sw.Start();
            action();
            sw.Stop();
            return sw.Elapsed;
        }

        private void NotStatic()
        {
        }
    }



Код: powershell
1.
2.
Static:     00:00:00.5190127
Not static: 00:00:00.4082426



И так не на одном запуске, а раз за разом. Нестатический метод вызывается быстрее чем статический. Причем и в дебажной и релизной сборке. Честно говоря, для меня это тоже полный сюрприз.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811530
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавим жару.

Код: c#
1.
2.
3.
        public virtual void Virtual()
        {
        }



Код: powershell
1.
2.
3.
Static:     00:00:00.3154586
Not static: 00:00:00.2473785
Virtual:    00:00:00.2532572



Даже виртуальный метод имеет статика в хвост и гриву
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811532
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatОбъясняйте мне тогда вот это
Зачем? Мне это вообще по барабану. Моя деятельность оценивается несколько по-другому.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811533
WebPrj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
love_bachWebPrjпропущено...

А как вы напишете это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// mathematical.hpp
 
namespace Constants
{
  inline constexpr double pi{ 3.14159 };
  inline constexpr double avogadro{ 6.0221413e23 };
  inline constexpr double my_gravity{ 9.2 };
}



скорее всего не на C#
А я думал
Код: sql
1.
2.
static class Constants
{
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811538
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И даже так

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    internal interface IProgram
    {
        void Interface();
    }

    internal class Program : IProgram
    {
        public void Interface()
        {
        }



Код: powershell
1.
2.
3.
4.
Static:     00:00:00.3932091
Not static: 00:00:00.2832406
Virtual:    00:00:00.2452205
Interface:  00:00:00.2511343



Статик самый медленный. Причем, что интересно, что вызовы виртуального метода и метода интерфейса быстрее чем обычного.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811540
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныfkthatОбъясняйте мне тогда вот это
Зачем? Мне это вообще по барабану. Моя деятельность оценивается несколько по-другому.
Ну тогда можешь скипать. Просто тут был пассажир, который объяснял что статик метод лучше, потому что его вызов быстрее. Даже какой-то машинный код тут в доказательство писал.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811542
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мухfkthatпропущено...

Асинк как-то ускорит выполнение самого запроса?Не, только если на Go переписать :)
а чем там то он поможет
у го свои тараканы
все издали кажется красиво
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811544
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebPrjА я думал
Код: sql
1.
2.
static class Constants
{



Код: 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.
public interface IMathConstant {
    double Value {get;}
}

public class PIMathConstants: IMathConstants {
   public double Value => 3.14159;
}

public class GravyMathConstant: IMathConstant {
   public double Value => 9.8;
}

public interface IMathConstantLocator {
   IMathConstant Get(string name);
}

public class MathConstantLocator: IMathConstantLocator {
   privat IComponentContext _ctx;
   public MathConstantLocator(IComponentContext ctx) { _ctx = ctx; }
   public IMathConstant Get(string name) => _ctx.ResolveNamed(name);
}

containerBuilder.RegisterType<PIMathConstants>().As<IMathConstants>().SingleInstance();
containerBuilder.RegisterType<GravyMathConstants>().As<IMathConstants>().SingleInstance();
containerBuilder.RegisterType<MathConstantLocator>().As<IMathConstantLocator>();
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811559
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вундербар
fkthatWebPrjА я думал
Код: sql
1.
2.
static class Constants
{



Код: 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.
public interface IMathConstant {
    double Value {get;}
}

public class PIMathConstants: IMathConstants {
   public double Value => 3.14159;
}

public class GravyMathConstant: IMathConstant {
   public double Value => 9.8;
}

public interface IMathConstantLocator {
   IMathConstant Get(string name);
}

public class MathConstantLocator: IMathConstantLocator {
   privat IComponentContext _ctx;
   public MathConstantLocator(IComponentContext ctx) { _ctx = ctx; }
   public IMathConstant Get(string name) => _ctx.ResolveNamed(name);
}

containerBuilder.RegisterType<PIMathConstants>().As<IMathConstants>().SingleInstance();
containerBuilder.RegisterType<GravyMathConstants>().As<IMathConstants>().SingleInstance();
containerBuilder.RegisterType<MathConstantLocator>().As<IMathConstantLocator>();


Главное, в процессе создания такой нетленки не забыть вот про Вундербар
fkthatWebPrjА я думал
Код: sql
1.
2.
static class Constants
{



Код: 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.
public interface IMathConstant {
    double Value {get;}
}

public class PIMathConstants: IMathConstants {
   public double Value => 3.14159;
}

public class GravyMathConstant: IMathConstant {
   public double Value => 9.8;
}

public interface IMathConstantLocator {
   IMathConstant Get(string name);
}

public class MathConstantLocator: IMathConstantLocator {
   privat IComponentContext _ctx;
   public MathConstantLocator(IComponentContext ctx) { _ctx = ctx; }
   public IMathConstant Get(string name) => _ctx.ResolveNamed(name);
}

containerBuilder.RegisterType<PIMathConstants>().As<IMathConstants>().SingleInstance();
containerBuilder.RegisterType<GravyMathConstants>().As<IMathConstants>().SingleInstance();
containerBuilder.RegisterType<MathConstantLocator>().As<IMathConstantLocator>();


Главное, в процессе создания такой нетленки не забыть вот про это .
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811563
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Ну ты не сравнивай "Hello factorial" и приложения, которые по десятку лет пишут, развивают и дорабатывают. Я бы мог кучу преимуществ своего примера кода привести над твоим static Consts, но, судя по твоей ссылке у тебя представление о разработке как раз такими "Hello factorial" и ограничивается, т.ч. тебе это все равно будет без пользы.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811580
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто победил, потом отпишитесь
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811582
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatСон Веры Павловны
Ну ты не сравнивай "Hello factorial" и приложения, которые по десятку лет пишут, развивают и дорабатывают . Я бы мог кучу преимуществ своего примера кода привести над твоим static Consts, но, судя по твоей ссылке у тебя представление о разработке как раз такими "Hello factorial" и ограничивается, т.ч. тебе это все равно будет без пользы.

чо то ты запизделси
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811587
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachчо то ты запизделси
Иди себе с миром писать еще один факториал на статиках :))
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811591
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да блин, задал я вопросик... Семь страниц. одного заблокировали... Я вас уже что-то боюсь.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811595
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlДа блин, задал я вопросик... Семь страниц. одного заблокировали... Я вас уже что-то боюсь.
не бойся... это от хорошой жизни, ну и с возрастом... на словоблудие тянет
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811623
WebPrj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,
С возрастом на максимализм и нравоучения тянет))
Это нельзя, этому лоботомию, этот с***а, тут я бы уволился и т.д.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811648
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatAntonariyГлупость, написанная капсом, умностью не становится.

AntonariyНо я-то умнее

Кажется, ты что-то осмысленное хотел написать, но хватило лишь на смайлик.
А впрочем, правильный подход. Смайликами очередную глупость не ляпнешь.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811672
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКажется, ты что-то осмысленное хотел написать, но хватило лишь на смайлик.
А впрочем, правильный подход. Смайликами очередную глупость не ляпнешь.

Да я и не спорю. Тут один ты у нас умный. Даже сам об этом написал.

AntonariyНо я-то умнее

Забыл, наверное, дописать "всех".
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39811717
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatAntonariyКажется, ты что-то осмысленное хотел написать, но хватило лишь на смайлик.
А впрочем, правильный подход. Смайликами очередную глупость не ляпнешь.

Да я и не спорю. Тут один ты у нас умный. Даже сам об этом написал.

AntonariyНо я-то умнее

Забыл, наверное, дописать "всех".Ну вот, перешел на буквы, и опять облажался, аж дважды. Вернись к смайликам, не позорься. Ну или к коду, к нему тоже претензий нет.
...
Рейтинг: 0 / 0
25 сообщений из 279, страница 7 из 12
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инициализация статического класса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]