我们参加了最近的Telegram竞赛,编写了一个很棒的OpenGL ES应用程序,但一无所获


展望未来,我想引起比赛第一阶段冠军的混乱局面。 获胜者赢得了5万名美国总统。 但是,至少有其他开发人员编写了相同的应用程序,并且没有得到任何回报。 他甚至没有占据最后的位置。 该开发人员通过他的网站https://tgcontest.braychuk.com/公开联系了Telegram团队并提出了问题。 如果有人对此有所了解,请在评论中写。


因此,让我们开始吧。


如您所知,Telegram最近向所有用户发送了直接消息,称它将举行编程竞赛。



我觉得真酷。
好吧,请阅读Android竞赛的条款:



我们在那里看到的是-“主要标准是速度和性能。” 太好了! 这不是许多程序员喜欢优化任务吗? 我只是崇拜他们。 因此,已经做出了参加比赛的决定,但仍需确定实施方法。 一件事很清楚,您需要从根本上彻底解决性能问题的解决方案。 因此,如果不是全部,那么至少要打破。 UI设计是竞赛的另一个标准,当然它的排名要比性能要低,因此我们很可能需要围绕Java UI并使用出现在设计草图中的标准控件。 但是,使用Java UI并在OpenGL的覆盖区域中进行渲染将是无利可图的,至少在这里它们会在上下文切换中造成损失。 但是我们要以高性能打破所有人。 因此,Java UI消失了,我们依靠性能,并且依靠设计。 让设计师去做,我们以程序员为荣:) 。 解决方案很明显-使用全屏OpenGL,顶点着色器,并以NDK / C ++编写所有代码。 即 我们只需要编写一个图形引擎/渲染(通常用于手机游戏即可),以便绘制Telegram图形。
是的,我知道,我疯了:)


这种方法有一个很大的缺点-我们将需要编写所有UI元素并为它们规定交互性,这将花费大量时间。 因此,我们将讨论最简单的UI实施:我们编写简单的UI交互式小部件,这些小部件能够确定自己的点击并以动态方式(在屏幕上实时移动时)进行点击。


结果大致如下:



实际上,以上所有内容都是在两周内实施的,当然,办公时间是空闲的,晚上不眠。


电报做什么? 用“不遵守设计,在一个屏幕上显示图形”这样的字眼,完全可以将我的应用程序从竞争中脱颖而出。


STA?



我想我一开始就被竞争弄错了:)因此,这不是可以通过实现高性能应用程序/算法来显示其能力水平的开发人员的竞争,而是设计师的竞争? 还是对于能够使用标准UI设计工具以及能够在同一UI上触摸画布的UI开发人员来说,这是最大的竞争吗?


好吧,无花果和他一起设计。 我不争辩,存在差异:) 。 那么,“在一个屏幕上显示图表”这样的措辞呢? 但这已经很有趣了。
如果您看一下比赛的条件,那么“完全”一词就不会出现这样的要求。 所以不可能。 所以我在某个地方错了。 电报严格遵循其设计草图并严格遵循它们。 因此,该要求“在视觉上”应显示在相同的草图中。


我们看一下草图:



啊... 图表在一个普通的“工作表”上并被滚动是看不到的。 相反,我们在一个屏幕上看到单独绘制的图形。 有两种可能的选择:


  1. 所有时间表实际上都在同一张纸上并滚动显示,但是它们只是没有在草图上直观地显示出来,也没有明确注册比赛中的所有内容
  2. 图以某种方式切换。 如何指示它,这意味着它是“默认”的,因此留给了开发人员。 他可以自行决定实现这一点。

通常,Telegram团队会学习编写TK,它将为您派上用场;) 。 说真的


性能等级


根据上述内容,我的应用程序没有进行性能评估。 但是还是。 购物车的性能如何?


看起来是这样的:“我们在旧设备上测试了您的应用程序,与其他设备相比,它运行起来不太顺利。”


STA?



电报,号码在哪里? 测试摘要表,以及基于数字形式表示的客观数据与其他应用程序的比较?


它应该看起来像这样:


  1. 我们接受了您的应用程序,并在图表的1000个起点处启动了该应用程序,然后在10,000个,100,000个和1,000,000个位置启动了这些FPS编号
  2. 您的应用程序获得了加分,从而获得了出色的性能。
  3. 由于设计和废话对我们很重要,因此您的应用程序获得了很多减分
  4. 结果,您的应用程序总共获得了N分
  5. 结果,您的应用程序在整体结果表中为Kth

这种评估事物的方法对于任何专业人员来说都是理所当然的。 也许Telegram还评估了其音频通信算法的质量? 耳朵吗 难怪那么为什么它仍然有很多不足之处。 在这种情况下,我的美国同事们喜欢说:“这是屁股上的痛苦。” 不过,可以公平地说,我对整个Telegram团队有更好的看法。


应用稳定性评估


和结局。


购物车如何评估应用程序的稳定性? 的确,按照这个标准,购物车从竞争中淘汰了整吨的申请。 一会儿,我将引起您的注意,即“第2阶段”比赛条件下的稳定性标准并未出现在“完全”一词中。


但是尽管如此。 他们使用模板字样剪切应用程序,“我们在多种设备上启动了您的应用程序。 在设备K和M上,它崩溃了“



我很尴尬地问,但是您要在哪些设备上测试竞争性应用程序呢? 该清单应该是公开的,因此所有竞争者都事先知道。 否则,谁能保证如果十分之一的应用程序在5分之一的设备上崩溃,那么它的工作稳定性将比其余所有未“崩溃”的应用程序不稳定? 但是,如果我使用这9个应用程序并在其他5台设备上运行它们会崩溃的所有东西,否则不会崩溃怎么办? 您如何看待这种情况? 然后,Telegram将如何评估所有10个应用程序的稳定性?


因此,幸存者犯了一个经典错误。


鼓掌电报,窗帘....


病理学家的结论


因此,我们得出结论,这场竞争是金融和食品金字塔,Naedalovo-



不幸的是,比赛中有许多参与者也不了解他们如何以及为什么选择这个或那个地方,或者根本不采取这个地方。 当然,我为所花费的时间和精力感到抱歉。 但是,如果比赛是公开透明的,所有的遗憾都会平息。


感谢您的关注!


聚苯乙烯
从此处下载apk-chechka

Source: https://habr.com/ru/post/zh-CN451696/


All Articles