map iterator_一个简单的Map Iterator性能测试

map iterator

Java Map性能有很多方面可以衡量,但是关键的一个是简单的单线程扫描。 这是一些针对Iterators和Java 8 Map.forEach()简单测试代码,以及一些图形结果。

1.性能测试困难

性能测试是一项非常困难的工作,精确的可重复性测试需要Java Microbenchmarking Harness之类的框架来过滤掉许多噪声源并提供诸如置信区间的统计信息。 但是,这里简单测试代码的结果是相对可重复的,并且与作者在JDK Maps和AirConcurrentMap(在boilerbay.com和githuboilbay / airconcurrentmap )上进行的JMH测试很好地相关。 还有针对流等的更广泛的JMH测试。

JMH并不复杂,但是它需要将工具从IDE切换到Maven模型,学习控件注释集,并处理充满混乱的另一个目录树以及可能的新IDE项目。 另外,我们希望一次运行即可自动跨越一系列地图大小和一组地图:这需要JMH中的“参数化”注释。 该测试的输出数据格式可以轻松地根据所需绘图工具的需求进行调整。

1.1引起噪音的问题

要获得良好的测试,必须解决许多问题:

  1. 内部循环不得有大量开销。 这可以通过使它简单地监视共享静态volatile int变量(由“检测信号”线程递增)的变化来解决。
  2. 垃圾收集可能会增加。这可以通过在针对不同Map的测试中分配GC开销循环机制来帮助。 我们还避免创建任何无法访问的对象。 在ORACLE JVM中使用-Xloggc:<file>来观看GC;
  3. 在运行期间,JVM可以随时优化代码。 我们使用每个测试的预热运行来允许这种情况发生。 很难知道何时会确切发生,但这仅需几秒钟。 可以通过更长的预热将其最小化。 典型的JVM标志'-XX:+ PrintCompilation'显示了优化进度。 另请参阅ORACLE文章 ;
  4. 随着Maps的增长,JVM会不稳定地增长,因此增长后的测试必须预热。
  5. 不同的Map使用不同的内存量,因此即使为每个测试分叉JVM也将取决于JVM的增长特征。 我们将所有Map保留在一个JVM中;
  6. 不同的地图必须具有完全相同的内容。 我们使用由Map大小作为种子的同步随机数生成器;
  7. 大型地图需要更多的时间进行迭代,而不是较小的时间。 心跳允许运行更多较小的Map,因此每次测试都需要固定的时间。
  8. 地图不得共享内容,因此早期测试不会将数据带入可用于后续测试的CPU缓存中;
  9. “及时”编译器不能优化循环。 我们打印内容的总和,这样循环就可以得到明显的结果。 如果要使用循环计数器,则JIT可以识别出模式并更改循环以增加一个大于1的数字,从而跳过许多迭代! 是的,这发生了! (至少在AirConcurrentMap中)。

2.结果

这些预防措施可帮助我们得出一些初步但可重复的结论。 结果显示:

  • forEach()比Iterators快得多;
  • 在大约3万个条目以下,ConcurrentSkipListMap的迭代速度最快,而在上面,AirConcurrentMap的迭代速度最快;
  • ConcurrentSkipListMap forEach()在大约100个条目以下最快,而AirConcurrentMap在上面最快。

3.代码详细信息

测试代码使用Test类包装器来包含特定的Map以及测试进度状态,例如时间,map大小,循环和运行总计。 该组织希望使main()更具可读性。

Test类实现BiConsumer以便可以在forEach(this)调用中使用它。 它只是覆盖了accept(Integer, Integer) 。 我们还测试了forEach((k, v) -> total += v) (作者尝试过,结果大致相同)。 无论哪种情况,都不能将局部变量用作总累加器,因为局部变量必须“有效地”终止于内部类或lambda,因此无论如何我们都需要一个包含范围内的实例变量,例如Test那个。 使用流进行简化也可以,但是我们对Iterators感兴趣。 (有关/ jmh中的相关流测试,请参见https://github.com/boilerbay/airconcurrentmap )。

心跳是一个static int ,每秒由一个单独的Thread递增一次。 心跳必须是易失的,以便其更改在线程之间传播–否则程序永远不会终止。

USE_ITERATIONUSE_LAMBDA标志是static final ,因此javac实际上会提前评估它影响的代码,从而USE_LAMBDA代码。 这被定义为必需的行为,因此那里没有开销。 当然,您必须重新编译才能进行各种测试,只是不要将它们更改为非静态或非最终的!

test.testIterator()的动态方法调用不会减慢内部循环,因为总是内联长度为35个字节或更少的方法。 而且,这里没有多态性Test类没有扩展,因此没有用于分发的vtable,也没有要压入堆栈的参数。

测试是相对可重复的,并在图中显示了总体模式。

4.代码

public class JavaCodeGeeksIteratorArticle {static volatile int heartBeat = 0;// otherwise use forEach()static final boolean USE_ITERATION = false;static final boolean USE_LAMBDA = true;public static void main(String... args) {System.out.println((USE_ITERATION ? "Iterator" :USE_LAMBDA ? " forEach(lambda)" : "ForEach()") + " performance test");Test tests[] = {new Test(new HashMap<Integer, Integer>()),new Test(new TreeMap<Integer, Integer>()),new Test(new ConcurrentHashMap<Integer, Integer>()),new Test(new ConcurrentSkipListMap<Integer, Integer>()),new Test(new AirConcurrentMap<Integer, Integer>())};int sizes[] = new int[] {1, 3, 10, 30, 100, 300, 1000, 3000, 10_000, 30_000, 100_000, 300_000,1000_000, 3_000_000, 10_000_000};// Just increment heartBeat every so often. It is volatile.// Reading it is very fast.new Thread(new Runnable() {public void run() {while (true) {heartBeat++;try {Thread.sleep(100);} catch (InterruptedException e) {}}}}).start();for (int i = 0; i < sizes.length; i++) {for (Test test : tests)test.fillTo(sizes[i]);// warmupfor (Test test : tests) {int nextHeartBeat = heartBeat + 20;while (heartBeat < nextHeartBeat)if (USE_ITERATION)test.testIterator();else if (USE_LAMBDA)test.testForEachLambda();elsetest.testForEach();}for (Test test : tests) {test.time = 0;test.loops = 0;long t0 = System.nanoTime();int nextHeartBeat = heartBeat + 30;while (heartBeat < nextHeartBeat) {if (USE_ITERATION)test.testIterator();else if (USE_LAMBDA)test.testForEachLambda();elsetest.testForEach();}long t1 = System.nanoTime();test.time += (t1 - t0);}for (Test test : tests)test.printResult();// System.out.println("---------------");}}
}class Test implements BiConsumer<Integer, Integer> {// The total provides a tangible result to prevent optimizing-outlong total = 0;long time = 0;int size = 0;long loops = 1;Map<Integer, Integer> map;Test(Map<Integer, Integer> map) {this.map = map;}void fillTo(int newSize) {Random random = new Random(size);while (size < newSize) {Integer n = new Integer(random.nextInt()); map.put(n, n); size++;}}void testIterator() { for (Integer v : map.values()) {total += v.intValue(); } loops++; }// This has the same effect and is 'terser' void testForEachLambda() {map.forEach((k, v) -> total += v);loops++;}void testForEach() {map.forEach(this);loops++;}// Implement BiConsumer for forEach()@Overridepublic void accept(Integer k, Integer v) {total += k.intValue();}void printResult() {double seconds = time / 1e9;System.out.printf("%22s size=% 9d entries/s(K)=% 11.3f total=%d\n",map.getClass().getSimpleName(), size, size * loops / seconds / 1e3, total);}
}

5.结果数据

图表数据如下。 例如,可以将其导入Excel并按Map类和大小进行排序,以手动制作图形。 您需要剪切并粘贴数据,然后使用文本到列。 可以使用折线图,为每个Map类手动选择一个系列的数据。 通过更改数据输出格式,也可以使用“ R”统计语言的ggplot。 忽略总数:这仅提供了有形输出,以避免优化循环。

JavaCodeGeeksIteratorArticleIterator performance testHashMap size=       1 entries/s=  31290.754K total=-289049400605539520TreeMap size=       1 entries/s=  50210.333K total=-331631386373881504ConcurrentHashMap size=       1 entries/s=  15881.356K total=-91464608232057952ConcurrentSkipListMap size=       1 entries/s=  42187.535K total=-254234286353018080AirConcurrentMap size=       1 entries/s=  25577.125K total=-149805405784208032
---------------HashMap size=       3 entries/s=  62664.626K total=-484691989675689270TreeMap size=       3 entries/s=  66908.091K total=-550745245141063704ConcurrentHashMap size=       3 entries/s=  38018.996K total=-211326922860746827ConcurrentSkipListMap size=       3 entries/s=  71265.063K total=-488278692474832005AirConcurrentMap size=       3 entries/s=  48540.146K total=-302163579336545082
---------------HashMap size=      10 entries/s=  86701.181K total=-832795481348512598TreeMap size=      10 entries/s=  87832.407K total=-916137658370092344ConcurrentHashMap size=      10 entries/s=  73069.458K total=-502840045890573499ConcurrentSkipListMap size=      10 entries/s=  96150.046K total=-880874881700377401AirConcurrentMap size=      10 entries/s=  72001.056K total=-591224549191451578
---------------HashMap size=      30 entries/s=  89419.363K total=-832238604657166224TreeMap size=      30 entries/s=  92397.645K total=-915559545928720920ConcurrentHashMap size=      30 entries/s=  71702.258K total=-502393457157098057ConcurrentSkipListMap size=      30 entries/s= 103387.524K total=-880213560719307683AirConcurrentMap size=      30 entries/s=  80807.271K total=-590716865563759348
---------------HashMap size=     100 entries/s=  90540.307K total=-845663104709828079TreeMap size=     100 entries/s=  96479.776K total=-930300717715488858ConcurrentHashMap size=     100 entries/s=  69055.433K total=-512752383626539310ConcurrentSkipListMap size=     100 entries/s= 111208.365K total=-897628029635465726AirConcurrentMap size=     100 entries/s=  89071.481K total=-604453907970584431
---------------HashMap size=     300 entries/s=  94846.852K total=-860347586557330269TreeMap size=     300 entries/s=  94506.995K total=-944821983122037883ConcurrentHashMap size=     300 entries/s=  65857.587K total=-522786710141245214ConcurrentSkipListMap size=     300 entries/s= 112398.344K total=-915694233970137252AirConcurrentMap size=     300 entries/s=  92168.052K total=-618862268508225735
---------------HashMap size=    1000 entries/s=  74493.997K total=-852961390806337305TreeMap size=    1000 entries/s=  80026.348K total=-937067262358689631ConcurrentHashMap size=    1000 entries/s=  38450.309K total=-519070765727723030ConcurrentSkipListMap size=    1000 entries/s= 112085.413K total=-904572392174355552AirConcurrentMap size=    1000 entries/s=  89022.852K total=-609589031935380951
---------------HashMap size=    3000 entries/s=  57470.417K total=-847037038798366713TreeMap size=    3000 entries/s=  65963.172K total=-930168324830420495ConcurrentHashMap size=    3000 entries/s=  41073.089K total=-514814334734654678ConcurrentSkipListMap size=    3000 entries/s= 109217.866K total=-892841347702876464AirConcurrentMap size=    3000 entries/s=  89175.845K total=-600361285087522951
---------------HashMap size=   10000 entries/s=  46254.558K total=-846309210319384299TreeMap size=   10000 entries/s=  49044.408K total=-929403633977808893ConcurrentHashMap size=   10000 entries/s=  36385.473K total=-514246034592481772ConcurrentSkipListMap size=   10000 entries/s=  99442.425K total=-891342788950136070AirConcurrentMap size=   10000 entries/s=  85447.544K total=-599022098209904335
---------------HashMap size=   30000 entries/s=  43723.556K total=-848942181585517584TreeMap size=   30000 entries/s=  45253.915K total=-932143497084889069ConcurrentHashMap size=   30000 entries/s=  32665.051K total=-516220137420939070ConcurrentSkipListMap size=   30000 entries/s=  83393.494K total=-896231928805619954AirConcurrentMap size=   30000 entries/s=  80619.262K total=-603845100973163554
---------------HashMap size=  100000 entries/s=  40028.088K total=-849706795555554639TreeMap size=  100000 entries/s=  41755.506K total=-932944794183923404ConcurrentHashMap size=  100000 entries/s=  26064.027K total=-516724530444651670ConcurrentSkipListMap size=  100000 entries/s=  46619.667K total=-897138307784594414AirConcurrentMap size=  100000 entries/s=  75034.058K total=-605290263409285564
---------------HashMap size=  300000 entries/s=  28271.140K total=-850157323063101369TreeMap size=  300000 entries/s=  23442.635K total=-933312552546033574ConcurrentHashMap size=  300000 entries/s=  22886.588K total=-517086645455936620ConcurrentSkipListMap size=  300000 entries/s=  26852.530K total=-897567202447311134AirConcurrentMap size=  300000 entries/s=  43406.800K total=-605991920028554584
---------------HashMap size= 1000000 entries/s=  20762.874K total=-850266118577777400TreeMap size= 1000000 entries/s=  21465.730K total=-933426629396373490ConcurrentHashMap size= 1000000 entries/s=  17617.501K total=-517179596963620996ConcurrentSkipListMap size= 1000000 entries/s=  17753.452K total=-897660153954995510AirConcurrentMap size= 1000000 entries/s=  24726.115K total=-606121840885886155
---------------HashMap size= 3000000 entries/s=  20859.307K total=-850290350569160265TreeMap size= 3000000 entries/s=  17078.422K total=-933446707332090721ConcurrentHashMap size= 3000000 entries/s=  19987.888K total=-517202444269781983ConcurrentSkipListMap size= 3000000 entries/s=  23990.479K total=-897687847659433070AirConcurrentMap size= 3000000 entries/s=  30472.006K total=-606157150359044044
---------------HashMap size= 10000000 entries/s=  18594.336K total=-850335966429011695TreeMap size= 10000000 entries/s=  14332.011K total=-933483200019971865ConcurrentHashMap size= 10000000 entries/s=  17038.665K total=-517248060129633413ConcurrentSkipListMap size= 10000000 entries/s=  18600.417K total=-897733463519284500AirConcurrentMap size= 10000000 entries/s=  39037.289K total=-606248382078746904
---------------ForEach() performance testHashMap size=       1 entries/s=  60469.332K total=-429010055848020608TreeMap size=       1 entries/s= 162720.446K total=-1192873323002853184ConcurrentHashMap size=       1 entries/s=  39683.288K total=-238381128098095008ConcurrentSkipListMap size=       1 entries/s= 125216.579K total=-742139402594604448AirConcurrentMap size=       1 entries/s=  40199.780K total=-223453462147226592
---------------HashMap size=       3 entries/s= 154792.076K total=-907351702836558858TreeMap size=       3 entries/s= 209809.380K total=-1866688472587176884ConcurrentHashMap size=       3 entries/s= 100788.166K total=-558021636792810008ConcurrentSkipListMap size=       3 entries/s= 202179.445K total=-1380005440196857173AirConcurrentMap size=       3 entries/s=  99654.211K total=-536118642462089017
---------------HashMap size=      10 entries/s= 297297.392K total=-2080956150412338142TreeMap size=      10 entries/s= 228262.234K total=-2782965758065995472ConcurrentHashMap size=      10 entries/s= 189641.651K total=-1313404093180619596ConcurrentSkipListMap size=      10 entries/s= 304427.266K total=-2602702896415550485AirConcurrentMap size=      10 entries/s= 179131.091K total=-1257952993772621945
---------------HashMap size=      30 entries/s= 305634.315K total=-2079066757218703314TreeMap size=      30 entries/s= 224584.862K total=-2781566150975000263ConcurrentHashMap size=      30 entries/s= 174917.912K total=-1312321443993669200ConcurrentSkipListMap size=      30 entries/s= 354581.676K total=-2600502266614288915AirConcurrentMap size=      30 entries/s= 254150.967K total=-1256373143380530839
---------------HashMap size=     100 entries/s= 295763.376K total=-2123996537948400465TreeMap size=     100 entries/s= 225375.420K total=-2816005249627104526ConcurrentHashMap size=     100 entries/s= 168596.386K total=-1337959745143386554ConcurrentSkipListMap size=     100 entries/s= 366342.358K total=-2656351051389612808AirConcurrentMap size=     100 entries/s= 336305.468K total=-1307783105877232718
---------------HashMap size=     300 entries/s= 335940.642K total=-2176036047793281607TreeMap size=     300 entries/s= 213798.860K total=-2849343024468137449ConcurrentHashMap size=     300 entries/s= 196158.746K total=-1368245793652746886ConcurrentSkipListMap size=     300 entries/s= 348762.198K total=-2711376732587358984AirConcurrentMap size=     300 entries/s= 435378.640K total=-1375390632080685627
---------------HashMap size=    1000 entries/s= 312285.030K total=-2145888100702813327TreeMap size=    1000 entries/s= 157007.240K total=-2834013084542617045ConcurrentHashMap size=    1000 entries/s= 178919.552K total=-1350929801563960438ConcurrentSkipListMap size=    1000 entries/s= 253518.140K total=-2687136797657993712AirConcurrentMap size=    1000 entries/s= 449868.858K total=-1331959489090096491
---------------HashMap size=    3000 entries/s= 269579.050K total=-2118053337323592431TreeMap size=    3000 entries/s= 129271.886K total=-2820412724828116661ConcurrentHashMap size=    3000 entries/s=  95870.060K total=-1340856888537750166ConcurrentSkipListMap size=    3000 entries/s= 203849.473K total=-2666107139705649888AirConcurrentMap size=    3000 entries/s= 443682.852K total=-1286068695711899563
---------------HashMap size=   10000 entries/s= 100969.734K total=-2116523986910706773TreeMap size=   10000 entries/s=  81240.085K total=-2819237854014952091ConcurrentHashMap size=   10000 entries/s=  74229.656K total=-1339726640597926192ConcurrentSkipListMap size=   10000 entries/s= 147733.052K total=-2664068913299591178AirConcurrentMap size=   10000 entries/s= 399269.901K total=-1279844336850624703
---------------HashMap size=   30000 entries/s=  77830.586K total=-2121068856388826590TreeMap size=   30000 entries/s=  73801.711K total=-2823183557187296024ConcurrentHashMap size=   30000 entries/s=  63503.394K total=-1343522194696030345ConcurrentSkipListMap size=   30000 entries/s= 148907.153K total=-2671403338078408622AirConcurrentMap size=   30000 entries/s= 450044.679K total=-1305454406448994036
---------------HashMap size=  100000 entries/s=  57919.591K total=-2122150626578319295TreeMap size=  100000 entries/s=  39468.243K total=-2823932886520250879ConcurrentHashMap size=  100000 entries/s=  30273.873K total=-1344103393021081000ConcurrentSkipListMap size=  100000 entries/s=  48766.187K total=-2672332261897079327AirConcurrentMap size=  100000 entries/s= 307460.503K total=-1311189966514089586
---------------HashMap size=  300000 entries/s=  42127.664K total=-2122825947560403955TreeMap size=  300000 entries/s=  26508.090K total=-2824353316156729769ConcurrentHashMap size=  300000 entries/s=  27206.845K total=-1344518179306734670ConcurrentSkipListMap size=  300000 entries/s=  19172.093K total=-2672628537815403377AirConcurrentMap size=  300000 entries/s= 152485.548K total=-1313414387297697136
---------------HashMap size= 1000000 entries/s=  40607.148K total=-2123037200986959355TreeMap size= 1000000 entries/s=  25159.911K total=-2824487462082592448ConcurrentHashMap size= 1000000 entries/s=  30257.523K total=-1344677675643783997ConcurrentSkipListMap size= 1000000 entries/s=  37742.151K total=-2672825003502099899AirConcurrentMap size= 1000000 entries/s= 148954.277K total=-1314169618297632691
---------------HashMap size= 3000000 entries/s=  43941.038K total=-2123087741997557902TreeMap size= 3000000 entries/s=  18891.646K total=-2824508924703531557ConcurrentHashMap size= 3000000 entries/s=  32007.894K total=-1344715062144774703ConcurrentSkipListMap size= 3000000 entries/s=  21722.543K total=-2672849927836093703AirConcurrentMap size= 3000000 entries/s= 126084.363K total=-1314312240875486125
---------------HashMap size= 10000000 entries/s=  35724.715K total=-2123169850545290476TreeMap size= 10000000 entries/s=  12693.940K total=-2824540855805427558ConcurrentHashMap size= 10000000 entries/s=  27254.306K total=-1344783485934551848ConcurrentSkipListMap size= 10000000 entries/s=  13572.712K total=-2672886420523974847AirConcurrentMap size= 10000000 entries/s=  92726.047K total=-1314522073830802703
---------------

6.总结

使用某些预防措施的简单代码,可以获得可重复的,有意义的自定义Map性能测试。 此代码显示了其中一些问题。 该代码可轻松适应其他种类的Map测试和数据输出格式。

翻译自: https://www.javacodegeeks.com/2017/04/simple-map-iterator-performance-test.html

map iterator

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学生用计算机中sto,STO 文件扩展名: 它是什么以及如何打开它?

STO 疑难解答常见的 STO 打开问题Ecru Software PRO100 不存在你尝试加载 STO 文件并收到错误&#xff0c;例如 “%%os%% 无法打开 STO 文件扩展名”。 如果是这种情况&#xff0c;通常是因为 你的计算机上没有安装 Ecru Software PRO100 for %%os%%。 由于您的操作系统不知道如…

MacBook 使用 Loopback 录屏和录音频(MacBook 录屏教程/录视频教程/Loopback 教程)

文章目录一、下载软体二、Loopback 界面介绍三、设置系统的声音输入/输出设备&#xff08;一&#xff09;设置声音输入设备&#xff08;二&#xff09;设置声音输出设备四、录制程序中选择声音输入设备五、开始录制一、下载软体 在網路上可以找到破解版的軟體 Loopback 二、L…

惠普照片打印软件_被看错的打印机?原来打印机还可以这么玩

孩提时代&#xff0c;经常弄丢试卷的小值君曾频繁地与打印店打交道&#xff0c;那是我最早接触打印机的时候。白驹过隙&#xff0c;时至当下&#xff0c;打印设备已然成为家庭不可或缺的部分。印象中&#xff0c;打印机要不就是打打文档&#xff0c;要不就是打打照片&#xff0…

dagger2 注入_使用Dagger 2在GWT中进行依赖注入

dagger2 注入依赖注入是一种软件开发概念&#xff0c;其中为对象提供了创建所需的所有对象或值。 GWT用户已经熟悉GIN&#xff0c;但已经不推荐使用此工具&#xff0c;因此不再支持它&#xff0c;因此使用GIN的应用程序当前确实需要告别。 Dagger是GWT的新依赖注入框架。 对于那…

oracle创建一个表同已存在表结构一样

oracle创建一个表同已存在表结构一样&#xff08;或者同时将数据导入&#xff09; –只是建立ta表&#xff0c;与emp表结构相同&#xff0c;并不添加数据 –这种构造与现存表相同结构的表&#xff0c;是不会将comment带过来的 create table ta as select * from scott.emp wh…

周敏教授计算机编码与密码学,中国科学院计算机与控制学院博士生导师:张玉清教授...

张玉清 男 博导 信息科学与工程学院电子邮件&#xff1a;zhangyqgucas.ac.cn通信地址&#xff1a;北京石景山区玉泉路19号甲邮政编码&#xff1a;100049部门/实验室&#xff1a;计算机与控制学院职务: 教授&#xff0c;副院长电子邮箱: zhangyqucas.ac.cn研究方向:计算机网络&a…

戴尔G3笔记本使用U盘重装操作系统

戴尔G3笔记本 下载安装大白菜U盘启动盘制作软件根据使用说明完成启动盘制作下载操作系统ISO文件重启电脑&#xff0c;连续按F12&#xff0c;打开如下界面后选择红色线框选项&#xff1a; 进入PE系统界面&#xff0c;打开【大白菜】&#xff0c;看到如下界面&#xff1a;

华南理工网络教育计算机概论,2020年《计算机概论》平时作业华南理工网络教育学院.pdf...

计算机概论平时作业1. 简 述人工智能答&#xff1a;人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支&#xff0c; 它企图了解智能的实质&#xff0c; 并生产出一种新的能以人类智能相似的方…

python合并csv文件_Python学习——pandas 合并csv文件

import pandas as pd import os import re import numpy as np Folder_Path rC:/Users/Cable-Ching\Desktop/New folder/New folder # 要拼接的文件夹及其完整路径&#xff0c;注意不要包含中文 SaveFile_Path rC:/Users/Cable-Ching\Desktop/New folder/New folder # 拼接后…

ebook_[EBOOK]十大Java性能问题

ebook有兴趣了解更多吗&#xff1f; 然后&#xff0c;您应该在此处下载相关的电子书。 Java中的大多数性能问题都可归因于少数根本原因。 当然&#xff0c;偶尔会有一些奇怪的极端情况突然出现&#xff0c;并在应用程序中造成严重破坏&#xff0c;但是在大多数情况下&#xff…

macOS下的视频格式转换器

1-Click Video Converter Total Video Converter Pro

valid floating point value什么意思_为什么 0.1 + 0.2 = 0.300000004?

往期热门文章&#xff1a;1、《往期精选优秀博文都在这里了&#xff01;》2、求求你&#xff01;数据库不要再使用外键了&#xff1f;3、还在写慢SQL&#xff1f;4、ELK太笨重了&#xff1f;想放弃&#xff1f;快试试日志系统新贵Loki吧&#xff01;5、谁再悄咪咪的吃掉异常&am…

用计算机处理信息教学反思,《人工智能处理信息》教学反思

作业内容《用智能工具处理信息》教学反思《用智能工具处理信息》的学习目标是&#xff1a;1.初步了解人工智能的概念。2.知道人工智能的两个研究领域“自然语言理解”和“模式识别”3.能够辨别“自然语言理解”与“模式识别”的区别。在教学的过程中重视学生学习兴趣的调动。课…

在抽象类中可以没有抽象方法_是否可以在最终课程中使用抽象方法?

在抽象类中可以没有抽象方法这是最近在Java开发人员工作面试的电话面试中向我的一位读者提出的有趣的Java核心问题之一。 即使他知道你 无法用Java将抽象类定型为final &#xff0c;他对方法的措辞感到困惑。 答案很简单&#xff0c;不&#xff0c;在Java的最终类中不可能有抽…

python二维列表排序_使用Python按顺时针方向排序二维坐标列表?

这应该说明问题&#xff0c;给出一个可视化工具 但对于在同一距离上获得一组点的正确入口点来说&#xff0c;这并不总是有效的import random import pylab import cmath from itertools import groupby pts [(random.randrange(-5,5), random.randrange(-5,5)) for _ in range…

如何维护笔记本电脑的电池

如何保护笔记本电池&#xff1f; 笔记本电脑尽量插电源使用&#xff0c;每个月对电池充电放电1~3次&#xff0c;放电时电量不要低于20%&#xff0c;现在笔记本电脑的电池都有过充保护机制&#xff0c;电池充满了就不会再继续充电&#xff0c;插着电源使用的是电源的电量&#…

微型计算机生产工艺,bb肥生产设备制造工艺流程

原标题&#xff1a;bb肥生产设备制造工艺流程BB肥生产设备与有机肥设备相比较而言设备相对简单&#xff0c;因而BB肥便具有投资小的优点&#xff0c;而且因其配方灵活&#xff0c;非常适合我国正在推广的测土配方肥的需要&#xff0c;是一种非常适合我国国情的肥料。在发达国家…

nodejs异步测试_异步过程的自动化测试

nodejs异步测试自从我开发了具有异步行为的服务器端应用程序以来已经有一段时间了&#xff0c;而该行为还不是事件驱动的系统。 异步行为始终是设计和测试中一个有趣的挑战。 通常&#xff0c;异步行为不应该很难进行单元测试–毕竟&#xff0c;动作的行为不一定必须在时间上进…

pipeline python,Python-什么是sklearn.pipeline.Pipeline?

I cant figure out how the sklearn.pipeline.Pipeline works exactly.There are a few explanation in the doc. For example what do they mean by:Pipeline of transforms with a final estimator.To make my question clearer, what are steps? How do they work?EditTha…

devc++鼠标变成了光标_Excel填充别再用鼠标拖拉了!用这4个方法,效率至少高10倍!...

Hello&#xff0c;各位叨友们好呀&#xff01;我是叨叨君~根据下表对照一下自己&#xff0c;在Excel中需要批量填充公式的时候&#xff0c;你是不是还在用鼠标拖拉的方法&#xff0c;将光标放在单元格的右下角&#xff0c;然后按鼠标左键&#xff0c;向下拖动&#xff0c;填充完…