Tag: 优化

iPhone – dequeueReusableCellWithIdentifier用法

我正在从事一个iPhone应用程序,它有一个相当大的UITableView与从networking采集的数据,所以我试图优化其创build和使用。 我发现dequeueReusableCellWithIdentifier是相当有用的,但在看到许多使用这个源代码后,我想知道如果我使用这个函数是好的。 以下是人们通常做的事情: UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"]; // Add elements to the cell return cell; 我这样做是这样的: // The cell row NSString identifier = [NSString stringWithFormat:@"Cell %d", indexPath.row]; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell != nil) return cell; cell = [[UITableViewCell alloc] initWithFrame:CGRectZero […]

为什么Magento这么慢?

Magento通常非常慢吗? 这是我第一次使用它,pipe理面板只需要很长的时间来加载和保存更改。 这是testing数据的默认安装。 它托pipe的服务器为其他非Magento网站提供超快的服务。 Magento使用的PHP代码是什么让它变得如此缓慢,以及可以做些什么来解决它?

SELECT COUNT()vs mysql_num_rows();

我有一个大桌子(60+)百万条logging。 我正在使用PHP脚本来浏览这个表格。 PHP脚本(与分页)加载非常快,因为: 表引擎是InnoDB,因此SELECT COUNT()非常慢,而mysql_num_rows()不是一个选项,所以我保留在一个单独的表中的总行数(我用来生成分页的数量)(我更新这个loggingtotal_rows=total_rows-1 DELETE和INSERT期间total_rows=total_rows-1和total_rows=total_rows1+1 )。 但问题是如何处理search结果的分页? 现在我用两个步骤来做这个: 1。 $condition = " fname='rinchik' "; $result = "SELECT * FROM my_large_table WHERE" . $condition; 在这里,我从DataBase获得所有search结果。 现在我需要把这些结果计算在一起来创build分页。 我正在这样做: $condition; <- we already have this from the step 1 $result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition; 而且有点慢。 如果我这样做(只要一步),会更好吗? $condition = " fname='rinchik' "; $result = […]

C / C ++:优化指向string常量的指针

看看这个代码: #include <iostream> using namespace std; int main() { const char* str0 = "Watchmen"; const char* str1 = "Watchmen"; char* str2 = "Watchmen"; char* str3 = "Watchmen"; cerr << static_cast<void*>( const_cast<char*>( str0 ) ) << endl; cerr << static_cast<void*>( const_cast<char*>( str1 ) ) << endl; cerr << static_cast<void*>( str2 ) << endl; cerr << static_cast<void*>( […]

为什么妈妈在Haswell上只有3个周期,与Agner的指令表不同?

我是一个新手在指令优化。 我简单的分析了一个简单的函数dotp,用来得到两个float数组的点积。 C代码如下: float dotp( const float x[], const float y[], const short n ) { short i; float suma; suma = 0.0f; for(i=0; i<n; i++) { suma += x[i] * y[i]; } return suma; } 我使用networkingtesting中的Agner Fog提供的testing框架。 在这种情况下使用的数组是alignment的: int n = 2048; float* z2 = (float*)_mm_malloc(sizeof(float)*n, 64); char *mem = (char*)_mm_malloc(1<<18,4096); char *a = […]

计算快速日志库2天花板

什么是计算(long int) ceiling(log_2(i))的快速方法,input和输出是64位整数? 有符号或无符号整数的解决scheme是可以接受的。 我怀疑最好的方法将是一个类似于这里发现的有点扭曲的方法,而不是尝试我自己的,我想使用一些已经testing好的东西。 一般的解决scheme将适用于所有正面的价值。 例如,2,3,4,5,6,7,8的值是1,2,2,3,3,3,3 编辑:到目前为止,最好的路线似乎是使用任何数量的快速存在的bithacks或注册方法计算整数/楼层日志基数2(MSB的位置),然后添加一个如果input不是功率二。 (n&(n-1))幂的快速按位检查。 编辑2:整数对数和前导零方法的一个很好的来源是Henry S. Warren在Hacker's Delight中的5-3和11-4节。 这是我发现的最完整的治疗方法。

在x86上将float转换为int的最快方法是什么?

在x86 CPU上将浮点数转换为int最快的方法是什么? 对于以下的任何组合,最好用C语言或汇编(可以用C语言表示): 32/64/80位浮点 – > 32/64位整数 我正在寻找一些比编译器更快的技术。

有什么情况下最好使用无条件AND(而不是&&)

我想知道在Java中的一些情况(或者更一般地说:在编程中),当在布尔expression式中首选使用无条件AND ( & )而不是条件版本( && )时。 我知道他们是如何工作的,但是我不能想到使用单个&是值得的。

是否可以使用单个UPDATE SQL语句执行多个更新?

比方说,我有一个列IDB和标题的表。 我需要更改标题列的所有值: 从“a-1”到“a1” 从“a.1”到“a1” 从“b-1”到“b1” 从“b.1”到“b1”。 现在,我正在执行两个UPDATE语句: UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1') UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1') 这完全不是问题,如果表很小,单个语句在一秒钟内完成,只需要执行几条语句。 你可能猜到了 – 我有一个巨大的表来处理(一个语句在大约90秒内完成),我有大量的更新来执行。 那么,是否可以合并更新,以便只扫描一次表格? 或者,在这样的情况下,还有更好的办法。 编辑:请注意,我正在使用的真实数据和我必须执行的数据的更改并不是真的那么简单 – string更长,他们不遵循任何模式(这是用户数据,所以没有假设可以做成 – 可以是任何东西)。

在枚举types上实现`next`和`previous`的最好方法是什么?

假设我有一个枚举: enum E { A, B, C; } 如Lucasmo的 答案所示,枚举值按照它们初始化的顺序存储在一个静态数组中,稍后可以使用E.values()检索(克隆)该数组。 现在假设我想要实现E#getNext和E#getPrevious ,使得以下所有expression式都计算为true : EAgetNext() == EB EBgetNext() == EC ECgetNext() == EA EAgetPrevious() == EC EBgetPrevious() == EA ECgetPrevious() == EB 我目前的getNext实现如下: public E getNext() { E[] e = E.values(); int i = 0; for (; e[i] != this; i++) ; i++; i %= e.length; […]