Страница: 1 | 2 | 3 |
|
Вопрос: time and Date
|
Добавлено: 01.06.06 17:23
|
|
Номер ответа: 17 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #17
|
Добавлено: 03.06.06 13:34
|
HOOLIGAN
Что ты все пыжисься со своими API, как будто это панацея! Они хороши там, где без них не обойтись (например VB6).
Да, ты знаешь API и это круто.. эти знания никогда не будут лишними.. Но так же не всегда они и будут нужными! Далеко не каждый знает API и порядок их вызова.. тем более в .NET это задача не настолько проста как кажется на первый взгляд..
А по поводу "оригинальности", дабы не быть голословным проведем обыкновенный тест...
Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential)> _
Structure SYSTEMTIME
<MarshalAs(UnmanagedType.U2)> _
Dim wYear As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMonth As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDayOfWeek As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDay As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wHour As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMinute As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wSecond As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMilliseconds As Short
End Structure
Public Class Form1
Private Declare Sub GetLocalTime Lib "kernel32.dll" ( ByRef lpSystemTime As SYSTEMTIME)
Private Sub Button1_Click( ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim stopWatch As New Stopwatch
Dim Counter As Integer
Console.WriteLine("----- Results of call -----"
'//API Test
stopWatch.Start()
For Counter = 1 To 50
Dim LocalTime As New SYSTEMTIME
GetLocalTime(LocalTime)
Next
stopWatch. Stop()
Console.WriteLine("API Test - {0} ms", stopWatch.Elapsed.TotalMilliseconds)
stopWatch.Reset()
'//System.DateTime.Now Test
stopWatch.Start()
For Counter = 1 To 50
Dim CurrentTime As Date = DateTime.Now
Next
stopWatch. Stop()
Console.WriteLine(" ateTime.Now Test - {0} ms", stopWatch.Elapsed.TotalMilliseconds)
stopWatch.Reset()
'//System.Date.Now Test
stopWatch.Start()
For Counter = 1 To 50
Dim CurrentTime As Date = Date.Now
Next
stopWatch. Stop()
Console.WriteLine(" Date.Now Test - {0} ms", stopWatch.Elapsed.TotalMilliseconds)
End Sub
End Class
Ответить
|
Номер ответа: 19 Автор ответа: HOOLIGAN
Вопросов: 0 Ответов: 1066
|
Профиль | | #19
|
Добавлено: 03.06.06 14:29
|
может ты просветишь, какое отношение имеют к оригинальности некие замеры неких скоростей, которые приведены?
Честно скажу, не могу понять как связаны оригинальность и скорость
А что касается твоего "теста на скорость", то результат просто смехотворен: 50 вызовов GetLocalTime = 0,7833 ms!!!
Реально на практике 50 вызовов GetLocalTime = ~0,01985 мс. Что почти в 10 раз быстрее DateTime.Now
Кроме того, ты либо не знаешь своего .net, либо передёргиваешь:
В тесте с апи создаются объекты Dim LocalTime As New SYSTEMTIME, со всеми сопутствующими потерями инициализации
в тесте же с DateTime.Now New нет. Почему?
Учись тестировать.
Ответить
|
Номер ответа: 20 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #20
|
Добавлено: 03.06.06 15:39
|
Даже если убрать New, то результаты все равно остаются более чем плачевные! И далеко НЕ в пользу API...
----- Results of call -----
GetLocalTime Test - 0,7146 ms
DateTime.Now Test - 0,136 ms
Date.Now Test - 0,0642 ms
Что очередной раз доказывает, что не следует использовать API в .NET как в каждую дырку затычка, ибо родные ф-ии тут работают на порядок быстрее.. Ведь не зря же в любой книге по НЕТ пишут о том, что использование неуправляемого кода (будь то API или COM-объекта) является крайне нежелательным..
Реально на практике 50 вызовов GetLocalTime = ~0,01985 мс
Где проводил тестирование? в VB6? Если ты не заметил, то этот топик относится к форуму .НЕТ..
На Си или ассемблере это наверняка будет еще быстрее, и результат твоего тестирования тут неуместен...
Ответить
|
Номер ответа: 22 Автор ответа: HOOLIGAN
Вопросов: 0 Ответов: 1066
|
Профиль | | #22
|
Добавлено: 04.06.06 00:44
|
Что очередной раз доказывает, что не следует использовать API в .NET как в каждую дырку затычка, ибо родные ф-ии тут работают на порядок быстрее
Полность согласен. Кроме того, что ты заметил, есть и второй вывод, который прямо проистекает из твоих слов:
ты встал на ступеньку ниже (в данном случае в плане скорости) и хвастаешь тем что на этой ступеньке обогнал связаного по рукам и ногам. Но при этом обогнав кого-то, ты все равно на порядок медленее той ступеньки, от которой ты отказываешься.
Если нормальные методы неприменимы в .нет, то может есть смысл отказаться от него?
Честное слово, я поражаюсь тебе и тебе подобным.
Ответить
|
Номер ответа: 23 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #23
|
Добавлено: 04.06.06 01:58
|
ты встал на ступеньку ниже (в данном случае в плане скорости)
Это ничто по сравнению с тем, что я выиграл в плане легкости, удобства написания и скорости разработки приложений.. Сотые доли миллисекунды в итоге против нескольких десятков строк геморройного кода вызова API и объявлений структур... они того не стоят (имхо)... А если тебе доставляет удовольствие писать километры кода, ради ничтожного выигрыша в скорости выполнения.. чтож.. это дело вкуса! Тогда тебе надо вообще бросать VB и переходить на ассемблер.. Уж там ты вдоволь насладишься всякими регистрами, стеками и т.д...
Если нормальные методы неприменимы в .нет, то может есть смысл отказаться от него?
А кто сказал что эти методы НОРМАЛЬНЫЕ??? Почему это надо принимать как аксиому? Нормальными (даже более чем) они были в эпоху VB6.. в эпоху динозавров!! Где в силу убогости языка как такового, невозможно было решить 80% задач без использования API.. Но с выходом НЕТ ситуация изменилась коренным образом.. Тепереь мне ни к чему изучать тонны мануалов по использованию API.. и ты знаешь, я счастлив что могу забыть про все эти буферы,нуль-символы.. и прочие прелести API!
И если уж ты предлогаешь отказаться от НЕТ, то в любом случае никак не в пользу VB6!!! Но это уже отдельная тема разговора...
Честное слово, я поражаюсь тебе и тебе подобным
Ты знаешь, я в свою очередь тоже поражаюсь тебе и тебе подобным. Той ярости и упорству с которым вы не желаете признавать НЕТ. И происходит это только потому, что вы теряете свое преимущество в знании API! Да, в эпоху VB6 ты был крут со своими знаниями, ты так же крут в каких то других языках, где API позволяют творить невозможное, но это .НЕТ!!!! Это другая технология.. И тут твои знания-ничто.. как бы прискорбно это не звучало, но согласись-это так..
Я вовсе не отрицаю полезности этих знаний.. Знание внутренней реализации тех или иных процессов никогда не было и не будет лишним.. Так же они развивают определенный склад ума,логику и многие другие полезные вещи, но наряду с этим ,теперь, они теряют былую актуальность и необходимость..
И впредь, прежде чем кому либо в НЕТ-форуме давать совет юзать API и говорить что это кульно, сначала подумай...
Ответить
|
Номер ответа: 26 Автор ответа: HOOLIGAN
Вопросов: 0 Ответов: 1066
|
Профиль | | #26
|
Добавлено: 04.06.06 09:11
|
EROS, я не понимаю, почему ты постоянно говоришь, что якобы я пишу километры кода?
Может тебе невдомёк, но допустим на асме я пишу меньше, чем на том же ВБ для одной и той же задачи. Кажется странным? Это потому, что ты понятия не имеешь, как выглядит исходник проги на асме и как строится структура программы. Для двух равных по функционалу прог исходник vb-проги весит больше, чем исходник асм-проги. А исходник на vb.net с его действительно километровыми строками весит ещё больше, как ни странно тебе это слышать Точно также и в асме существуют иде для графической (мышью) разработки интерфейса. И они превосходят по уровню ту же вб-иде. Поэтому и в создании интерфейса никакого преимущества у тебя нет.
Единственно, в чем есть преимущество, если это можно назвать преимуществом - это то, что тебе ничего не надо уметь и знать, чтобы сляпать прогу. Вот это и есть тот шаг на ступеньку ниже в знаниях и умениях.
А ты ещё и гордишься этим, и что самое неприятное - призываешь других в сообщество неумеек и незнаек. Вместо того, чтобы поощрять начинающих к тому, чтобы они становились действительно знающими и умеющими специалистами. Как собака на сене: и сам не могу/не хочу уметь и другим не дам научиться.
Очень странная у тебя позиция...
Я как постил, так и буду постить альтернативные методы, в каком бы форуме они не были. Если хотя бы один отвернется от .нет, то уже есть надежда, что этот человек не потерян для программирования. И из него возможно и выйдет специалист, а не бездумный кнопкокидатель.
Ответить
|
Номер ответа: 28 Автор ответа: HOOLIGAN
Вопросов: 0 Ответов: 1066
|
Профиль | | #28
|
Добавлено: 04.06.06 12:19
|
Мне не нужно отстаивать право на жизнь того инструментария, которым я пользуюсь.
Этот инструментарий доказал свою состоятельность тем, что в течение многих лет является базисом и основой как операционной среды, в которой мы сидим, так и новомодных надстроек а-ля .нет над этим инструментарием.
Да и нет у меня намерения отворотить тебя от .нет. Как говорится, "Кесарю - кесарево, слесарю - слесарево"...
Неприятно видеть, как новички ведутся на рекламную мишуру, которую ты преподносишь как чудо: "А в нет это легко!", "А в нет это одна строка!" и т.д. и. т.п. В конечном итоге мозги жиром заплывают, и рождаются вопросы типа "А как выделить имя файла из пути?" Это благодаря тебе такие тупые вопросы возникают, которые решаются при минимальных умственных затратах в течение минуты. Вот это самое неприятное. Люди перестают думать.
Ответить
|
Номер ответа: 29 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #29
|
Добавлено: 04.06.06 12:59
|
И снова я с тобой не соглашусь.. Неспособность думать, это не следствие использование того или иного языка, а умственные способности конкретного человека!
У каждого из нас был тот момент, когда остро чувствовалась нехватка знаний, и человек мыслящий начинает копать вглубь, и задавать сам себе вопросы почему и как??? Он стремится к саморазвитию! И освоив тот же НЕТ, как более легкое средство в разработке программ, если возникнет необходимость в познании того же асма или Си, он будет изучать эти языки и технологии. Но если же ему этого не надо, зачем навязывать ему то, что знаешь ты? К чему выливать на новичка эти АПИ, когда он просто физически и умственно еще не готов к тому, чтобы понять что это такое и как с ними работать!!! Если он еще не в состоянии "выделить имя файла из пути" а ты ему... юзай GetLocalTime или еще что покруче!!!
Одно дело, если бы ты привел рабочий кусок кода на НЕТ где показал бы как надо юзать АПИ, и растолковал ему что да как, тогда другое дело, я бы сам с радостью поднабрался бы знаний в этой области.. А так, эти ответы равносильны тем, что у нас на форуме практикуются всегда.. сходи в гугл, почитай книжки,купи МСДН.. и т.д.. согласись-это по крайней мере не профессионально! Если уж ты взялся отвечать человеку на его вопрос.. так будь добр, сделай это по нормальному и до конца.. с куском кода, с примером и т.д.. А нет.. так и постить не стоит... (имхо)
Ответить
|
Страница: 1 | 2 | 3 |
Поиск по форуму