V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
DAOCLOUD
推荐学习书目
Python Cookbook
Using Google App Engine
推荐下载
Latest Google App Engine SDK
其他兼容技术
AppScale
julia

GAE: v2ex这样是不是比较慢?

  •  
  •   julia · Dec 17, 2010 · 4929 views
    This topic created in 5622 days ago, the information mentioned may be changed or developed.
    上次问库操作方法快慢问题:http://www.v2ex.com/t/5727

    但我发现v2ex的大都是 db.GqlQuery ,比如这个取头像的

    q = db.GqlQuery("SELECT * FROM " + K + " WHERE name = :1", str(name))


    和这个 x.all().filter('name =',k) 谁快?或者有什么高效的方法?

    @Livid 说db.GqlQuery最慢,那他干嘛还要用?求解答!
    9 replies    1970-01-01 08:00:00 +08:00
    fsw90628
        1
    fsw90628  
       Dec 17, 2010
    all()之后再filter看上去肯定不快啊
    jeeson
        2
    jeeson  
       Dec 17, 2010
    getByObjectId 最快,相当于哈希查询,不过先得获得id
    darasion
        3
    darasion  
       Dec 17, 2010
    看起来是不行的,一定实测。
    ayanamist
        4
    ayanamist  
       Dec 18, 2010
    @fsw90628 all()之后是个虚拟对象,必须要用fetch或者迭代才会真正的去取数据,类似ActiveRecord的东西。
    我也想不明白为啥@Livid 用这么效率又不高又不Pythonic的方式……
    c
        5
    c  
       Dec 19, 2010
    代码是不断完善的嘛,有那么一天Livid会重构的 :)
    mamimoluo
        6
    mamimoluo  
       Dec 20, 2010
    @fsw90628
    不是你想想的那样的,呵呵。你以为是先全部all出来,再做筛选啊!
    jckwei
        7
    jckwei  
       Dec 20, 2010
    v2ex目前可能运行成本比较高。
    fsw90628
        8
    fsw90628  
       Dec 20, 2010
    @ayanamist @mamimoluo 好吧,我承认是刚起床头脑昏昏回的贴。
    举个例子
    query = Song.all()
    query.filter('title =', 'Imagine')
    filter是对query的一次修改,在query.fetch()执行之前什么都没有发生的。
    我猜想用Gql是为了代码的统一性吧,有一些高级feature?纯属瞎猜。
    Livid
        9
    Livid  
    MOD
    PRO
       Dec 21, 2010
    db.GqlQuery 这一句或许确实不够快,但是,如果具体到 V2EX 的这个 handler,那么一切是有缓存的……

    只要 handler 在 99% 的时间里够快就足够了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3082 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 05:30 · PVG 13:30 · LAX 22:30 · JFK 01:30
    ♥ Do have faith in what you're doing.