Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2009 22:34:37

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite на Windows

“У меня на Висте SP1, NTFS ваш код занимал полсекунды-секунду.”

Это очень, очень странно.
WindowsSP3 (и NTFS, надо же) 2GB AMD4400+
Сижу и любуюсь на 9.39100003242 секунд. 100 записей. 9 с лишним секунд.
Мы об одном же коде говорим?



Офлайн

#2 Окт. 21, 2009 23:15:56

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

SQLite на Windows

u4upyПример кода - ваш. Без изменений.
Мой лаптоп несколько побыстрее будет - но не в десять же раз!
Винда, повторяюсь - Windows Vista SP1. А не Windows XP SP3. Это все же несколько отличающиеся операционные системы.

Да, кстати. Глянул в исходники PyQt 4.4 (она старовата - зато уже стоит на моей машине). sqlite в наличии версий 1 и 2. В то время как в стандартном питоне - 3.
Может быть, в этом кроется причина таких диких тормозов? Хотя бы отчасти.



Офлайн

#3 Окт. 21, 2009 23:26:37

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

SQLite на Windows

ZZZ
Поверьте, для “С_с_плюшками” тоже есть более приличные библиотеки сетевого взаимодействия. Притом - кроссплатформенные. Тот же boost::asio - красавец!!!
И еще более, чем на питоне - доставляет наличие “самопального” контейнера для всего, начиная с QString. Я понимаю, что начинали ребята тогда, когда о Степановском stl мало кто слышал. Но тем не менее!!! Приходится постоянно переводить из одного интерфейса в другой. Ахтунг: бей своих, чтобы чужие боялись.



Офлайн

#4 Окт. 21, 2009 23:56:33

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

SQLite на Windows

Андрей Светлов
Поверьте, для “С_с_плюшками” тоже есть более приличные библиотеки сетевого взаимодействия.
Да знаю я. Просто весь Qt в сумме… Когда разные либы имеют, фактически, одну нотацию и документацию… Там и QXml удобным получается. За счёт однородности.
Согласись, что в большинстве случаев набора чистого Qt хватает. Там есть почти всё, что нужно для написания обычных пользовательских программ. :-)
Это как спор: Django vs Pylons. Единое целое или куча разрозненных кусочков. Что лучше? Каждый выбирает сам.



Офлайн

#5 Окт. 22, 2009 02:26:44

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

SQLite на Windows

Люблю “из кусочков”. Каждый выберу, исходя из своих нужд.
Хорошо, если эти части являются _расширениями_ стандарта - а не вариацией на тему “мы напишем все сами с нуля”.
Как еще не так давно каждый плюсовик писал свои строки и списки (да и сейчас иногда пишут, чего греха таить).
“Все уже есть” имеет обратную сторону - добавить другое нелегко.
Проповедник джанги Иван Сагалаев настолько хорошо знает ее внутренности, что способен обходить сложности и изобретать велосипед легко и непринужденно. У меня - иной путь.

Кстати, сегодня Гвидо заявил в python-sig: не будет рассматривать расширения языка до тех пор, пока не приведут в порядок стандартную библиотеку и не закончат миграцию на тройку.



Офлайн

#6 Окт. 22, 2009 10:14:24

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

SQLite на Windows

u4upy
Сижу и любуюсь на 9.39100003242 секунд. 100 записей. 9 с лишним секунд.
Мы об одном же коде говорим?
AsusEEE PC 900 мгц проц., WinXP SP2, NTFS - 11 сек.. Вариант с “чистым” sqlite 0.2 сек (учитывая commit).
Когда я уже домой, я могу выбрать два пути. По одному из них постоянные пробки. Но зачем выбирать выбирать маршрут с пробками, ругаясь потом на неспособность властей привести дорожную обстановку в городе.
Этой теме место во флейме…



Офлайн

#7 Окт. 22, 2009 12:44:41

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

SQLite на Windows

Андрей Светлов
Хорошо, если эти части являются _расширениями_ стандарта - а не вариацией на тему “мы напишем все сами с нуля”.
Вот вот!.. К сожалению, слишком многие и на питоне умудряются свои стандарты придумывать.
Я сам больше люблю, когда каждая часть вылизана отдельно (как Gentoo, например :-)), но всё-таки работать удобнее в целостной системе с устоявшемся окружением и типизированными интерфейсами (я про MacOS X, к слову :-)).

Андрей Светлов
“Все уже есть” имеет обратную сторону - добавить другое нелегко.
Да. Но если всё сделать правильно, то получается вполне сносно.
Вот мне вспомнился пример с libtorrent – я просто написал обёртку из нескольких классов, чтобы предать всему этому делу qt'шный стиль.

igor.kaist
Этой теме место во флейме…
И снова я развёл флейм… Ребят, убейте меня! Последние пол года, где бы я не появлялся, начинается дикий троллинг, флейм и оффтоп.
Вот вчера вечером сидело четыре вахоё… вахофила (warhammer) и обсуждали своих е… любимых человечиков… А закончилось всё это тем, что пришёл я и разговор переключился на спор о том, где приятнее пить пиво (“Mollis Irish Pub” vs “Foggy Dew” (на Восстания)) и какая RDBMS лучше (Посгри vs Мускл (Оракл все споров)).



Офлайн

#8 Окт. 25, 2009 02:18:16

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite на Windows

Ну да, транзакции. ))) Зря я так разволновался.

import os
import time
import sys
import sqlite3
from PyQt4.QtSql import *
from PyQt4.QtGui import *

filename = "db.db"
if os.path.exists(filename):
os.unlink(filename)

app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(filename)
db.open()

q = QSqlQuery()

q.exec_("""CREATE TABLE test (number INTEGER NOT NULL)""")

t = time.time()
db.transaction()#!
for i in xrange(10000):
q.exec_("INSERT INTO test (number) VALUES ('%s')" % i)
db.commit()
print time.time() - t

q.clear()
db.close()

#-----------------------------

os.unlink(filename)

conn = sqlite3.connect(filename)
conn.execute('''create table test (number int)''')
conn.commit()

c = conn.cursor()

t = time.time()
for i in xrange(10000):
c.execute('insert into test (number) values (%s)' % i)
conn.commit()
print time.time() - t

conn.close()
>>>
0.344000101089
0.266000032425
>>>

Все таки PyQt немножко медленней. Книжку снова читаю, радуюсь. Всем спасибо.



Офлайн

#9 Окт. 25, 2009 02:31:00

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite на Windows

Андрей Светлов
С базами данных из Qt никогда не работал - не вижу смысла.
Потому что менее удобно, или сталкивались с какими-то проблемами?



Офлайн

#10 Окт. 25, 2009 12:04:23

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

SQLite на Windows

u4upy
Потому что менее удобно, или сталкивались с какими-то проблемами?
Потому что менее удобно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version