我怎么打高cpu请在谷歌上应用程序的发动机?
-
03-07-2019 - |
题
举一个例子的种请求,我可想不出还有什么要做到:
该应用程序是 保龄球/stat跟踪器.当有人进入他们的成绩中的先进模式,一些统计数据计算的,以及它们的得分。数据是建模为:
游戏的成员,如姓名、用户参考的保龄球馆,这是你 框架pinfalls对每个球,布尔名单,其销被撞倒在每个球信息球的路径(立场的目标,在那里,它实际上去),分为这一框架,等等 GameStats-商店计算统计数字的整个游戏,是合并与其他游戏的统计根据需要为统计显示各组的游戏。
一个这样的例子的信息在实践中可以找到 在这里,.
当游戏是完整的,并框架是最新的,我需要更新的游戏,该框架,每一个框架之后,可能还有一些之前(这是为了确保他们的分数都是正确的),并将统计数据。这个动作总是标志的CPU监测。甚至如果这游戏是不完整和统计数据不需要计算、分数和这类需要更新,以显示出实时的进展向用户,所以这些也得到标记。CPU的平均时间为这一处理程序是超过7000mcycles,它甚至没有显示图。大多数人碗3至4个游戏每个系列-如果他们进入他们的成绩时,在通道,这是大约1的要求,每2至4分钟,但是,如果他们把它写下来的所有,并将其输入后,有30至40这些要求正在进行中。
作为请求,该数据模型的重要类别:
class Stats(db.Model):
version = db.IntegerProperty(default=1)
first_balls=db.IntegerProperty(default=0)
pocket_tracked=db.IntegerProperty(default=0)
pocket=db.IntegerProperty(default=0)
strike=db.IntegerProperty(default=0)
carry=db.IntegerProperty(default=0)
double=db.IntegerProperty(default=0)
double_tries=db.IntegerProperty(default=0)
target_hit=db.IntegerProperty(default=0)
target_missed_left=db.IntegerProperty(default=0)
target_missed_right=db.IntegerProperty(default=0)
target_missed=db.FloatProperty(default=0.0)
first_count=db.IntegerProperty(default=0)
first_count_miss=db.IntegerProperty(default=0)
second_balls=db.IntegerProperty(default=0)
spare=db.IntegerProperty(default=0)
single=db.IntegerProperty(default=0)
single_made=db.IntegerProperty(default=0)
multi=db.IntegerProperty(default=0)
multi_made=db.IntegerProperty(default=0)
split=db.IntegerProperty(default=0)
split_made=db.IntegerProperty(default=0)
class Game(db.Model):
version = db.IntegerProperty(default=3)
user = db.UserProperty(required=True)
series = db.ReferenceProperty(Series)
score = db.IntegerProperty()
game_number = db.IntegerProperty()
pair = db.StringProperty()
notes = db.TextProperty()
simple_entry_mode = db.BooleanProperty(default=False)
stats = db.ReferenceProperty(Stats)
complete = db.BooleanProperty(default=False)
class Frame(db.Model):
version = db.IntegerProperty(default=1)
user = db.UserProperty()
game = db.ReferenceProperty(Game, required=True)
frame_number = db.IntegerProperty(required=True)
first_count = db.IntegerProperty(required=True)
second_count = db.IntegerProperty()
total_count = db.IntegerProperty()
score = db.IntegerProperty()
ball = db.ReferenceProperty(Ball)
stance = db.FloatProperty()
target = db.FloatProperty()
actual = db.FloatProperty()
slide = db.FloatProperty()
breakpoint = db.FloatProperty()
pocket = db.BooleanProperty()
pocket_type = db.StringProperty()
notes = db.TextProperty()
first_pinfall = db.ListProperty(bool)
second_pinfall = db.ListProperty(bool)
split = db.BooleanProperty(default=False)
解决方案
一些建议:
- 你可以储存的统计框架的一部分相同的实体,如游戏,而不是具有一个独立的实体的每一个,通过保存它作为一个列表中的bitfields(存储在整数)的脚站在每个半框架,例如。让我知道如果你想要的更多细节如何,这将是实现的。
- 如果做不到这一点,可以计算出一些更加相互关联的统计获取。例如,计算得分-迄今为止在应该是简单的如果你整个游戏装在一次,这意味着你可以避免有更新多个框架,在每一请求。
- 我们可以有更多的帮助如果你告诉我们你的数据模型。:)
不隶属于 StackOverflow