Cache Missing

这是亚麻OA 题

// find all the N substring with only one duplicate character.
#include <iostream>     // std::cout
#include <algorithm>    // std::make_heap, std::pop_heap, std::push_heap, std::sort_heap
#include <vector>       // std::vector
#include <unordered_map>
#include <unordered_set>
#include <numeric>
#include <sys/time.h>
#include <list>

//main point : use list to store the cached elements.
//solution : using list to store the cached elements and then iterate the input sequence.
using namespace std;

int CacheMiss ( vector<int>& nums, int size){
    std::list<int> ls;  //why use list? frequently delete and insert.

    int missCnt =0;
    for (auto& e: nums){
        if (ls.size() < size){
            ls.push_back (e);
            missCnt ++;
            cout<< "missing "<< e << endl;
            continue;
        }

        auto itor = find(ls.begin(),ls.end(),e);
        if (itor != ls.end()){//e exist in list. hit.  delete the exist one in the list and push_back it into list again.
            ls.erase(itor);
            ls.push_back(e);
               cout<< "hiting "<< e << endl;
        }
        else {// missing     delete  the first one in the list and push_back new one into list.
            cout<< "pop out " <<ls.front();
            ls.pop_front();

            ls.push_back(e);
           cout<< " missing "<< e << endl;
            missCnt ++;
        }
    }
    return missCnt;
}
int main () {
    //get the start time.
    struct timeval tv;
    gettimeofday(&tv,NULL);
    long ts = tv.tv_sec * 1000 + tv.tv_usec / 1000;

    //*** call the function .
    vector<int> in = {1, 2, 3, 4, 5, 4, 1};
    auto out = CacheMiss(in , 4);

    cout<< " the missing time is: " << out << endl;
    //*** end of the call

    //get the time of end.
    gettimeofday(&tv,NULL);
    long te = tv.tv_sec * 1000 + tv.tv_usec / 1000;

    //output the time of the running.
    cout<<endl<< endl<< "running tmie is : " << te - ts << endl;
    return 0;
}

原文地址:https://www.cnblogs.com/HisonSanDiego/p/8283259.html

时间: 2024-10-29 23:06:16

Cache Missing的相关文章

【转载】深入理解Direct3D9

原文:Effulgent的<深入理解Direct3D9>整理版(转) 深入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包涵. 其实只要你能完美理解D3DLOCK.D3DUSAGE.D3DPOOL.LOST DEVICE.QUERY.Present().BeginScene().EndScene()等概念,就算是理解D3D9了, 不知道大家有没有同感.有如下几个问题,如果你能圆满回答就算

哈希表入门讲解

散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构.也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度.这个映射函数称做散列函数,存放记录的数组称做散列表. 一个通俗的例子是,为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表(即建立人名{\displaystyle x}到首字母{\displaystyle F(x)}的一个函数关系),在首字母为W的表中查找"王"姓的电话号

高性能高并发系统的稳定性保障

小码哥 于 1 月前 发表在 七嘴八舌 作者:肖飞,于2011年8月份加入京东,曾亲身参与到京东的应用性能监控.统一日志.流式计算.内存缓存.四层防攻击等一些基础技术平台的研发和搭建工作,经历了京东的技术系统从简单粗放向复杂精细化的演变过程.目前主要工作为多中心交易项目中的数据复制中间件JingoBUS的研发.平时也会开发一些公共的平台和工具,关注分布式系统的实现.程序设计.性能优化.开发语言等. 本文是2015年肖飞在内部分享的<高性能高并发系统的稳定性保障>PPT内容. 性能.并发.稳定性

尝试优化骨骼动画计算的意外收获——使用内嵌式汇编对float转int进行优化

本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4984530.html 最近一直在尝试优化公司引擎的代码,因为公司之前的客户端最大只支持1440x900的分辨率,现在想要提高到1920x1080,但是怕性能方面有问题,所以让我试试看能不能提高客户端在几百人同屏时的帧数和稳定性. 因为公司引擎目前是使用CPU计算骨骼动画,虽然采用了D3DX提供的函数(D3DX的矩阵运算使用了SSE指令,即SIMD技术)进行计算,但在屏幕中存在大量角

ipset高大上性能果断将nf-HiPac逼下课

netfilter,sourceforge,github上有一个凄凉的项目,那就是nf-hipac,这个曾经给Linux firewall设计带来希望的项目早在2005年就停止了更新和维护,而我本人则是在2007年才被曹老师带上道的...知道hipac则是2012年 的事,曾经在2.6.13上编译成功,获得了声称的所谓高性能,后来我的工作大部分都在2.6.32上进行,由于2.6.32引入大量2.6.13上没有 的机制,也由于版本间隔太多,内核API不兼容,hipac移植到2.6.32上费了不少劲

DX笔记之一---Direct3D基础

一.预备知识 1.表面 表面就是Direct3D用于储存2D图像数据的一个像素矩阵.width和height以像素为单位,pitch以字节单位,用接口IDirect3DSurface来描述表面 LockRect:该方法用于获取指向表面存储区的指针,通过通过指针运算,可对每个像素进行读写操作: UnlockRect:配对使用,调用lock必须unlock,解除对表面存储区的锁定: GetDesc: 获取表面的描述信息,通过填充D3DSURFACE_DESC; //Assume _surface i

哈希表——swift字典的实现原理

我们先看看维基百科的介绍 散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构.也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度.这个映射函数称做散列函数,存放记录的数组称做散列表. 一个通俗的例子是,为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表(即建立人名到首字母的一个函数关系),在首字母为W的表中查找"王"姓的电话号码,显然比直接查找就要快得多.这

[转帖]Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有

Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有 之前用 千兆的机器 下载速度 一般只能到 50MB 左右 没法更高 万兆的话 可能也就是 200MB左右的速度 很难更高 不知道后续的服务器 会不会 能够提升一下 之前坐着说到了 120nm 的时间 发送一个包 记得CPU的指令周期是 1-3nm左右 个内存的时间差不多了 不知道RDMA等的方式 可不可能完成相应的高吞吐量的处理. 原作者博客 https://blog.csdn.net/zhoukejun/article/detai

Maven Missing artifact jar

maven error:Multiple annotations found at this line: - Missing artifact log4j:log4j:jar:1.2.15:compile - Missing artifact org.apache.xmlbeans:xmlbeans-xpath:jar:2.4.0:compile - Missing artifact org.apache.ws.commons.axiom:axiom-dom:jar:1.2.5:compile