Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 2

Рекомендованные сообщения

серьезный бэнчмарк, как я погляжу

 

Сколько конкретно профита то?

ну профит стремится к нулю. а в чем конкретно я облажался? ты так и не сказал

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

а кзд вообще что имел ввиду в своем вопросе про player = null

 

аа, всё. Я строчку не заметил


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

вот для визы.

static void Main(string[] args)
	{
		DateTime dt = DateTime.Now;
		int a;
		for (int i = 0; i < 100000000; i++)
		{
			a = 1;
		}
		Console.WriteLine((DateTime.Now - dt).Milliseconds);
		dt = DateTime.Now;

		for (int i = 0; i < 100000000; i++)
		{
			int b = 1;
		}
		Console.WriteLine((DateTime.Now - dt).Milliseconds);
		Console.Read();
	}

такой код в первый раз выводит меньшее число.

 

какой-то ты странный программист... если возвращать null, то придется везде ставить проверки на null дальше по коду или все повалится к ебеням. Уж лучше тогда кинуть эксепшен типа UserNotFoundException и нормально его обработать. Вообще return null; это в 99 случаях из 100 антипаттерн. Так же ни в одном из моих примеров нет двойной инициализации объекта.

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

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

 

Какой смысл создавать лишний объект если условие не выполнится? Так же не вижу смысла каждый раз создавать новый объект если пользователя нет. Твой подход как минимум хуёв. Создание нового экземпляра пустого объекта как минимум в 4 раза дольше, чем переиспользование существующего, а уж если еще какая-то логика выполняется...

Написал бенчмарк даже:

1d23e02e2159.jpg


Изменено пользователем DIMAN123456789

Поделиться сообщением


Ссылка на сообщение

вот для визы.

static void Main(string[] args)
	{
		DateTime dt = DateTime.Now;
		int a;
		for (int i = 0; i < 100000000; i++)
		{
			a = 1;
		}
		Console.WriteLine((DateTime.Now - dt).Milliseconds);
		dt = DateTime.Now;

		for (int i = 0; i < 100000000; i++)
		{
			int b = 1;
		}
		Console.WriteLine((DateTime.Now - dt).Milliseconds);
		Console.Read();
	}

такой код в первый раз выводит меньшее число.

 

какой-то ты странный программист... если возвращать null, то придется везде ставить проверки на null дальше по коду или все повалится к ебеням. Уж лучше тогда кинуть эксепшен типа UserNotFoundException и нормально его обработать. Вообще return null; это в 99 случаях из 100 антипаттерн. Так же ни в одном из моих примеров нет двойной инициализации объекта.

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

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

 

Какой смысл создавать лишний объект если условие не выполнится? Так же не вижу смысла каждый раз создавать новый объект если пользователя нет. Твой подход как минимум хуёв. Создание нового экземпляра пустого объекта как минимум в 4 раза дольше, чем переиспользование существующего, а уж если еще какая-то логика выполняется...

Написал бенчмар даже:

1d23e02e2159.jpg

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

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

вот для визы.

static void Main(string[] args)
	{
		DateTime dt = DateTime.Now;
		int a;
		for (int i = 0; i < 100000000; i++)
		{
			a = 1;
		}
		Console.WriteLine((DateTime.Now - dt).Milliseconds);
		dt = DateTime.Now;

		for (int i = 0; i < 100000000; i++)
		{
			int b = 1;
		}
		Console.WriteLine((DateTime.Now - dt).Milliseconds);
		Console.Read();
	}

такой код в первый раз выводит меньшее число.

 

какой-то ты странный программист... если возвращать null, то придется везде ставить проверки на null дальше по коду или все повалится к ебеням. Уж лучше тогда кинуть эксепшен типа UserNotFoundException и нормально его обработать. Вообще return null; это в 99 случаях из 100 антипаттерн. Так же ни в одном из моих примеров нет двойной инициализации объекта.

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

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

 

Какой смысл создавать лишний объект если условие не выполнится? Так же не вижу смысла каждый раз создавать новый объект если пользователя нет. Твой подход как минимум хуёв. Создание нового экземпляра пустого объекта как минимум в 4 раза дольше, чем переиспользование существующего, а уж если еще какая-то логика выполняется...

Написал бенчмар даже:

1d23e02e2159.jpg

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

Если нет разницы, объясняй почему второй вариант работает в 4 раза дольше.

Поделиться сообщением


Ссылка на сообщение
(изменено)

Подожди-ка, я не понял

Почему второй вариант дольше?

И там и там динамическое выделение памяти new :fffuuu:


Изменено пользователем МЕДОВАЯ ВТАРКА

Поделиться сообщением


Ссылка на сообщение

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

 

Подожди-ка, я не понял

Почему второй вариант дольше?

И там и там динамическое выделение памяти new :fffuuu:

в первом случае память выделяется 1 раз при инициализации типа (первое обращение к типу)

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

ну и вообще если быть честным - то если ты запрашиваешь из базы данных несуществующую сущность - то лучше вернуть налл.

т.к. в любом случае придется проверять вернул ли что-нибудь запрос или нет и проверять по тому, что id = 0 ни чем не лучше, чем проверять по тому, что объект указывает на налл


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

ну и вообще если быть честным - то если ты запрашиваешь из базы данных несуществующую сущность - то лучше вернуть налл.

т.к. в любом случае придется проверять вернул ли что-нибудь запрос или нет и проверять по тому, что id = 0 ни чем не лучше, чем проверять по тому, что объект указывает на налл

не знаю как в шарпе, но в java в таком случае можно сравнить объект по ссылке просто с нулевыми потерями. То есть если ты вернул EMPTY_PLAYER, то можно сравнить с помощью == на equals. Да и вообще, не просто же так придумали Null Object, может вы всегда юзаете проверки на null, но это треш и угар. Я бы по крайней мере сделал такое (пишу на шарпе всего неделю, не пинай сильно :trollface: ):

class LeaguePlayer
{
   private int _id;
   public virtual int id
   {
    private set
    {
	    if(id > 0)
		    _id = id;
    }
    get { return _id; }
   }

   private string _name;
   public virtual string name
   {
    set { _name = name; }
    get { return _name;}
   }

   private LeaguePlayer()
   {
   }

   public LeaguePlayer(int uid)
   {
    this.id = uid;
   }

   public readonly static LeaguePlayer EMPTY_PLAYER = new EmptyLeaguePlayer();

   private class EmptyLeaguePlayer : LeaguePlayer
   {
    public override int id
    {
	    get { return -1; }
    }

    public override string name
    {
	    set { throw new NotSupportedException("Not supported for EMPTY_PLAYER"); }
	    get { return "EMPTY"; }
    }
   }
}

Поделиться сообщением


Ссылка на сообщение
(изменено)

как в win forms сделать чтобы время шло на форме?

через DataTimePicker только в настоящий момент получается, а надо чтобы оно шло вперед как на компе


Изменено пользователем Kolya.Ebashu

 

 

trollgentleman.gif

131c75b37c8e.gifnukanuka.gifyep.gif

Поделиться сообщением


Ссылка на сообщение

как в win forms сделать чтобы время шло на форме?

через DataTimePicker только в настоящий момент получается, а надо чтобы оно шло вперед как на компе

Запустить в отдельном потоке, не, не слышал.

Поделиться сообщением


Ссылка на сообщение

как в win forms сделать чтобы время шло на форме?

через DataTimePicker только в настоящий момент получается, а надо чтобы оно шло вперед как на компе

Запустить в отдельном потоке, не, не слышал.

все верно, поэтому спросил :trollface:

 

 

trollgentleman.gif

131c75b37c8e.gifnukanuka.gifyep.gif

Поделиться сообщением


Ссылка на сообщение

объединять объявление переменной с присваиванием - моветон.

ситуативно

какой смысл этого не делать, если у тебя гарантировано следующей строчкой будет MyClass = new MyClass();

юзлесс

это тоже моветон

	private LeaguePlayer GetPlayerByQuery(string Query)
	{
		commmand.CommandText =
			 @"SELECT player_id, access, name, voucher, ban_type, ban_admin, ban_reason, ban_date, ban_until,
wins, loses, points,
streak, rep, leader, lastseen, location, reason, roles, current_game, points_thisweek, points_lastweek, date, access_date, access_admin, title, title_position, achievements
" + Query;
		LeaguePlayer player = new LeaguePlayer();
		MySqlDataReader Reader = commmand.ExecuteReader();
		if (Reader.Read())
		{
			player = new LeaguePlayer();
			player.PlayerID = Convert.ToInt32(Reader["player_id"]);
			player.Access = Convert.ToInt32(Reader["access"]);
			player.Name = Reader["name"].ToString();
			player.VoucherID = Convert.ToInt32(Reader["voucher"]);
		... bla-bla-bla
		}
		Reader.Close();
		return player;
	}

 

предложишь какую-нибудь альтернативу кроме "LeaguePlayer player = null"?

тебе все дмитрийцифры написал, но ты бы вообще начал с того, что if (Reader.Read()) это вообще пиздец. а если у тебя запрос больше одной строчки вернет?


Публикация отключена

Поделиться сообщением


Ссылка на сообщение
(изменено)

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

 

Форма должна находиться на отдельной странице с относительным адресом /feedback/.

 

Должны быть поля:

ФИО (обязательное поле);

e-mail и телефон (обязательно одно поле);

сообщение (обяхательное поле).

 

Если пользователь залогинен, то нужно подставить значения ФИО и e-mail.

Т.к. страница кэшируется на сервере полностью, то данные нельзя просто подставить в поле на сервере, а необходимо загрузить их ajax-ом при открытии страницы. Для загрузки нужно использовать обработчик (ashx). Для доступа к данным залогиненого пользователя нужно использовать класс UserHelper.

 

При всех обязательных полях и правильном их заполнении нужно отправлять письмо с ними и датой на мыло

 

 

Вот то, что выделено - я совсем не понимаю, что именно нужно делать, у меня есть aspx страница, где находится форма для отправки данных, у меня есть данные о текущем пользователе, но как их так хитро закинуть в контролы, как от меня требуют? =\

Начальник ушел, спросить не у кого, а сидеть ничего не делать - не вариант

Ах, да. ASP.NET =\


Изменено пользователем Letanir

Поделиться сообщением


Ссылка на сообщение

 

объединять объявление переменной с присваиванием - моветон.

ситуативно

какой смысл этого не делать, если у тебя гарантировано следующей строчкой будет MyClass = new MyClass();

юзлесс

это тоже моветон

	private LeaguePlayer GetPlayerByQuery(string Query)
	{
		commmand.CommandText =
			 @"SELECT player_id, access, name, voucher, ban_type, ban_admin, ban_reason, ban_date, ban_until,
wins, loses, points,
streak, rep, leader, lastseen, location, reason, roles, current_game, points_thisweek, points_lastweek, date, access_date, access_admin, title, title_position, achievements
" + Query;
		LeaguePlayer player = new LeaguePlayer();
		MySqlDataReader Reader = commmand.ExecuteReader();
		if (Reader.Read())
		{
			player = new LeaguePlayer();
			player.PlayerID = Convert.ToInt32(Reader["player_id"]);
			player.Access = Convert.ToInt32(Reader["access"]);
			player.Name = Reader["name"].ToString();
			player.VoucherID = Convert.ToInt32(Reader["voucher"]);
		... bla-bla-bla
		}
		Reader.Close();
		return player;
	}

 

предложишь какую-нибудь альтернативу кроме "LeaguePlayer player = null"?

 

тебе все дмитрийцифры написал, но ты бы вообще начал с того, что if (Reader.Read()) это вообще пиздец. а если у тебя запрос больше одной строчки вернет?

ну он возьмет только первую строку и всё.

Ему норм.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

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

 

Форма должна находиться на отдельной странице с относительным адресом /feedback/.

 

Должны быть поля:

ФИО (обязательное поле);

e-mail и телефон (обязательно одно поле);

сообщение (обяхательное поле).

 

Если пользователь залогинен, то нужно подставить значения ФИО и e-mail.

Т.к. страница кэшируется на сервере полностью, то данные нельзя просто подставить в поле на сервере, а необходимо загрузить их ajax-ом при открытии страницы. Для загрузки нужно использовать обработчик (ashx). Для доступа к данным залогиненого пользователя нужно использовать класс UserHelper.

 

При всех обязательных полях и правильном их заполнении нужно отправлять письмо с ними и датой на мыло

 

 

Вот то, что выделено - я совсем не понимаю, что именно нужно делать, у меня есть aspx страница, где находится форма для отправки данных, у меня есть данные о текущем пользователе, но как их так хитро закинуть в контролы, как от меня требуют? =\

Начальник ушел, спросить не у кого, а сидеть ничего не делать - не вариант

Ах, да. ASP.NET =\

Пиздец, горе программист, в гугле что ли забанили? Нашел на первой же странице по запросу ashx то что надо: http://usanov.net/776-sozdaem-ashx-xendler-v-aspnet

Поделиться сообщением


Ссылка на сообщение
(изменено)

Пиздец, горе программист, в гугле что ли забанили? Нашел на первой же странице по запросу ashx то что надо: http://usanov.net/77...endler-v-aspnet

Это я читал. Ну я могу написать хэндлер сам по себе, как его к странице то готовой привязать?

Если ты мне выдашь другую классную ссылку, где будет написано, что надо в вебконфиге прописать, то и это я уже делал.

Плюс это лишь половина вопроса, суть больше в передаче данных конкретным элементам.

 

Уж я всегда вначале в гугл лезу :fffuuu:

 

Бтв, домой пришел, тут привязка работает :fffuuu:

Беда все еще осталось, как с помощью такого хэндлера, при помощи ajax, можно изменять элементы страницы?


Изменено пользователем Letanir

Поделиться сообщением


Ссылка на сообщение

Пацаны, кто сидит на koding.com поделитесь инвайтом. А то не успел к раздаче на хабре, регу временно прикрыли.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...