Tag: 性能

为什么在RecyclerView.Adapter的onBindViewHolder中添加一个OnClickListener被认为是不好的做法?

我有一个RecyclerView.Adapter类的下面的代码,它工作正常: public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Viewholder> { private List<Information> items; private int itemLayout; public MyAdapter(List<Information> items, int itemLayout){ this.items = items; this.itemLayout = itemLayout; } @Override public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false); return new Viewholder(v); } @Override public void onBindViewHolder(Viewholder holder, final int position) { Information item = […]

ConfigurationManager.AppSettingscaching

我们知道IIS高速cachingConfigurationManager.AppSettings,所以它只读取一次磁盘,直到web.config被更改。 这是为了性能目的而完成的。 有人在: http://forums.asp.net/p/1080926/1598469.aspx#1598469 表示.NET Framework不会为app.config执行相同的操作,但是它会从磁盘读取每个请求。 但我觉得很难相信,因为它会变慢。 请告诉我他是错的,否则我将不得不修复我编写的每个控制台/ Windows窗体/ Windows服务。 更新我很遗憾,我误解了人们在上面的链接论坛中所说的话。

为什么间接递增比直接公司更快?

这个问题已经被另一个SO成员问过了,但是被删除的令人失望。 评论说这些测量是有缺陷的,没有意义。 但是我能够用JMH下的一个小基准重现原来的问题: package bench; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.*; import org.openjdk.jmh.runner.options.*; import java.util.concurrent.*; @State(Scope.Benchmark) public class LoopInc { private int getValue() { return ThreadLocalRandom.current().nextInt(2); } @Benchmark public int directInc() { int result = 0; for (int i = 0; i < 1000; i++) { switch (getValue()) { case 0: break; case 1: result++; break; } […]

对于不可接受的Web应用程序响应时间是否有一些行业标准?

有一个我正在定制的cots(商业现货)应用程序,其中有几页需要很长时间才能加载某些数据分布。 (在这个例子中,我正在谈论大约3分钟的页面加载时间,并且时间呈指数级增长)。 显然这是不可接受的,但是在那里我可以指出可接受的响应时间是多less? 我希望有一些好的研究可能讨论响应时间。

不区分大小写的string在Python中开始

这里是我如何检查mystring是否以string开头: >>> mystring.lower().startswith("he") True 问题是mystring很长(数千个字符),所以lower()操作需要很多时间。 问题:有没有更有效的方法? 我不成功的尝试: >>> import re; >>> mystring.startswith("he", re.I) False

MySQL解释计划中“Select tables optimized away”的含义

在MySQL解释计划中Select tables optimized away的含义是什么? explain select count(comment_count) from wp_posts; +—-+————-+—————————+—————————–+ | id | select_type | table,type,possible_keys, | Extra | | | | key,key_len,ref,rows | | +—-+————-+—————————+—————————–+ | 1 | SIMPLE | all NULLs | Select tables optimized away| +—-+————-+—————————+—————————–+ 1 row in set (0.00 sec) 注意: explain plan为易读性编辑的explain plan输出。

如何快速将数据加载到R?

我有一些R脚本,我必须尽快加载R中的几个dataframe。 这是非常重要的,因为读取数据是程序中最慢的部分。 例如:从不同的数据框绘图。 我以sav(SPSS)格式获取数据,但是我可以按照build议将其转换为任何格式。 不幸的是,合并数据框不是一个选项。 什么可能是加载数据的最快方法? 我在想以下几点: 第一次从sav转换成二进制R对象( Rdata ),后来总是加载这个,因为它比read.spss 。 从sav转换到csv文件,并从本主题中讨论的参数中读取数据, 还是值得在本地主机上设置一个MySQL后端并从中加载数据呢? 它会更快吗? 如果是这样,我也可以保存variables的任何自定义attr值(例如从Spss导入的文件中的variable.labels )? 或者这应该在一个单独的表中完成? 任何其他的想法,欢迎。 预先感谢您的每一个build议! 我根据你给出的答案做了一个小实验,并且还添加了(24/01/2011)一个相当“黑客”,但真正快速的解决scheme,只从一个特殊的二进制文件加载几个variables/列。 后者似乎是我现在可以想象的最快的方法,这就是为什么我编了一个名为“ 保存”的小包来处理这个function。 该包是在“重”发展,任何build议是值得欢迎的! 我将很快发布一个精确的基准testing结果,借助microbenchmark软件包。

为什么Java没有真正的multidimensional array?

对于那些不想要背景的人来说,TL; DR版本是以下具体问题: 题 为什么Java没有实现真正的multidimensional array? 有一个坚实的技术原因吗? 我在这里错过了什么? 背景 Java在语法级别有multidimensional array,可以声明 int[][] arr = new int[10][10]; 但这似乎并不是人们所期望的。 而不是让JVM分配一个足以存储100个int的连续块,它是以int数组的forms出现的:所以每一层都是连续的RAM块,但是整体来说不是这样。 访问arr[i][j]是相当慢的:JVM必须 find存储在arr[i]的int[] arr[i] ; 索引这个来find存储在arr[i][j]的int 。 这包括查询一个对象从一层到另一层,这是相当昂贵的。 为什么Java这样做 在一个层面上,不难看出为什么不能通过简单的扩展和增加查找来优化,即使它们全部分配在一个固定块中。 问题是, arr[3]是所有它自己的参考,它可以被改变。 所以虽然数组的大小是固定的,但我们可以很容易地写出来 arr[3] = new int[11]; 现在规模和增加是因为这个层次的增长而被拧紧的。 你需要知道在运行时是否所有东西都和以前一样大小。 此外,当然,这将被分配到RAM中的其他地方(这将是,因为它比它所替代的要大),所以它甚至不是在缩放和添加的正确位置。 有什么问题呢 在我看来,这是不理想的,这有两个原因。 首先,它很慢 。 对于多维情况( int[1000000]和int[100][100][100] ),使用这些方法对单维或multidimensional array的内容进行求和的testing花费了近两倍的时间 (714秒vs 371秒) int[100][100][100] ,用随机的int值填充,运行1000000次,热caching)。 public static long sumSingle(int[] arr) { long […]

最快的方法来检查在NodeJs中的文件的存在

我build立一个超级简单的服务器在节点和我的onRequest监听器我试图确定,如果我应该提供一个静态文件(closures磁盘)或一些JSON(可能从mongo拉)基于request.url的path。 目前我试图首先统计文件(因为我在其他地方使用mtime),如果没有失败,那么我从磁盘读取内容。 像这样的东西: fs.stat(request.url.pathname, function(err, stat) { if (!err) { fs.readFile(request.url.pathname, function( err, contents) { //serve file }); }else { //either pull data from mongo or serve 404 error } }); 除了为request.url.pathnamecachingfs.stat的结果fs.stat ,有没有什么可以加速这个检查? 例如,如果fs.readFile错误而不是stat ,它会一样快吗? 或者使用fs.createReadStream而不是fs.readFile ? 或者我可以检查使用child_process.spawn东西的文件? 基本上我只是想确保我不会花费任何额外的时间搞乱w / fileio当请求应发送给mongo的数据… 谢谢!

即使使用where子句,“SELECT COUNT(*)”也很慢

我想弄清楚如何在MySQL中优化非常慢的查询(我没有devise这个): SELECT COUNT(*) FROM change_event me WHERE change_event_id > '1212281603783391'; +———-+ | COUNT(*) | +———-+ | 3224022 | +———-+ 1 row in set (1 min 0.16 sec) 比较完整的计数: select count(*) from change_event; +———-+ | count(*) | +———-+ | 6069102 | +———-+ 1 row in set (4.21 sec) 解释说明在这里没有帮助: explain SELECT COUNT(*) FROM change_event me WHERE […]