Size: a a a

var chat = new Chat();

2020 May 03

VL

Vova Lantsov in var chat = new Chat();
@Gopnegg присоединяйся
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Я не хотел переходить на конкретные реализации (Redis/MemCached любые другие), а просто говорил, что работать с данными в оперативе aka в кэше быстрее чем на жестком. Но надо реализовать допольнительный саппорт и решать некоторые проблемы, которые могут возникать. Но в итоге это дает хороший прирост. Но это инструмент как и всё остальное. Неправильное использования инструмента может только усугубить ситуацию. Я согласен, что плохо обыгранная связка кэш+бд может проиграть просто бд, с которой при настройке выжали максимум. Но тут всё зависит только от того, как вы воспользовались возможностями того или иного инструмента/подхода
источник

E

Etki in var chat = new Chat();
> оператива aka кэш
это не одно и то же

> быстрее чем на жестком
вы зря возводите такие штуки в аксиому
потому что у меня прямо сейчас в материнку воткнут диск с dram-кэшем, на том же расстоянии, что и оперативка, поэтому утверждать, что оперативка будет быстрее - нельзя

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

E

Etki in var chat = new Chat();
(не говоря уж о NUMA, где въебаться в стену проще простого)
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Прям в материнку)
А как же рейд массивы, которые идут отдельно
источник

E

Etki in var chat = new Chat();
при чем тут рейд-массивы, если я говорю "А > Б не аксиома, потому что, как минимум, существуют условия, где A ~~ Б"?
источник

E

Etki in var chat = new Chat();
да и рейд 1 вряд ли идет на соседний диск при чтении, потому что зачем если он синхронизирован
источник
2020 May 04

B

Bogdan in var chat = new Chat();
Переслано от Bogdan
public static void MemoryBarrierProcessWide() in class Interlocked

Summary
Provides a process-wide memory barrier that ensures that reads and writes from any CPU cannot move across the barrier
источник

B

Bogdan in var chat = new Chat();
Переслано от Bogdan
как это процесс вайд?
источник

AK

Alex Kiev in var chat = new Chat();
внутри процесса?
источник

PD

Panda Dn in var chat = new Chat();
Хай гайз, подскажите, ASP.NET Core 3.1 web api. на с# классе не байндится [JsonPropertyName] отличное от название в коде. Пробовал такие атрибуты: [FromQuery(Name = "")] + [BindProperty(Name =)] +  [JsonProperty(PropertyName = "")] + [JsonPropertyName("")] -> не помогло.🧐 Пример: JSON name -> current_data, C# name -> Data
источник

B

Bogdan in var chat = new Chat();
Alex Kiev
внутри процесса?
This is a wrapper over the FlushProcessWriteBuffer Windows API or sys_membarrier on a Linux kernel:


В общем синкает все треды

но я так полагаю только на пайплайны и кеши повлияет, но не на реолрдеринг компилером)



Из того что я понял, самый распостреннный юзкес — опбликовать свое изменение какой-то переменной в дургие треды (NAU!!!)
источник

B

Bogdan in var chat = new Chat();
Вопросец, как volatile работет?

В Interlocked нашел только Excange и CompareExchage  для референс типов, а для целчоичеденных еще Add/Inc/Dec

т.е. любое чтение и просто запись в волятайл пременную делает барьер?
источник

AK

Alex Kiev in var chat = new Chat();
Bogdan
Вопросец, как volatile работет?

В Interlocked нашел только Excange и CompareExchage  для референс типов, а для целчоичеденных еще Add/Inc/Dec

т.е. любое чтение и просто запись в волятайл пременную делает барьер?
я могу полностью ошибаться но оно просто гарантирует что переменная в L3 общем для ядер и на этом "потокобезопасность" всё
источник

B

Bogdan in var chat = new Chat();
хм, думаю этого достаточно))) хм
источник

B

Bogdan in var chat = new Chat();
о, еще такое есть


           Object kek = null;
           kek = Thread.VolatileRead(ref kek);
источник

B

Bogdan in var chat = new Chat();
Volatile.Read(ref kek);


И такое есть 0_О
источник

B

Bogdan in var chat = new Chat();
в общмузнал:

Thread.VolatileRead  делает полный барьер r/w


просто чтение с волятайл переменной делает ReadBarrier
просто запись  волятайл переменной делает WriteBarrier
источник

B

Bogdan in var chat = new Chat();
Стало не менее понятно
источник

AA

Alexey Adamenko in var chat = new Chat();
Panda Dn
Хай гайз, подскажите, ASP.NET Core 3.1 web api. на с# классе не байндится [JsonPropertyName] отличное от название в коде. Пробовал такие атрибуты: [FromQuery(Name = "")] + [BindProperty(Name =)] +  [JsonProperty(PropertyName = "")] + [JsonPropertyName("")] -> не помогло.🧐 Пример: JSON name -> current_data, C# name -> Data
Подключи newtonsoft json для сериализации и тогда будет работать как в старом нет коре
источник