r-spatialecology / landscapemetrics

Landscape Metrics for Categorical Map Patterns 🗺️ in R
https://r-spatialecology.github.io/landscapemetrics
GNU General Public License v3.0
230 stars 43 forks source link

Basic package benchmarks #282

Closed Nowosad closed 1 year ago

Nowosad commented 1 year ago

I wrote a quick, raw code to measure examples' timings (see its application for the terra branch). Maybe it could be useful for someone...:

library(landscapemetrics)
library(dplyr)
all_examples = dir("man", pattern = ".Rd$", full.names = TRUE)

measure_time = function(x){
    suppressWarnings({ti = system.time(pkgload::run_example(x, quiet = TRUE))})
    df = data.frame(t(as.vector(ti)[1:3]))
    df$name = x
    return(df)
}

my_df = lapply(all_examples, measure_time)
my_df = do.call(rbind, my_df)
my_df |> arrange(X3)
#>        X1    X2    X3                                    name
#> 1   0.002 0.000 0.002                   man/podlasie_ccilc.Rd
#> 2   0.003 0.000 0.003     man/fragstats_patch_augusta_nlcd.Rd
#> 3   0.003 0.000 0.003         man/options_landscapemetrics.Rd
#> 4   0.003 0.000 0.003                man/rcpp_cell_from_xy.Rd
#> 5   0.004 0.000 0.003        man/rcpp_get_nearest_neighbor.Rd
#> 6   0.002 0.001 0.003              man/rcpp_xy_from_matrix.Rd
#> 7   0.003 0.000 0.004         man/rcpp_create_neighborhood.Rd
#> 8   0.004 0.000 0.004        man/fragstats_class_landscape.Rd
#> 9   0.004 0.000 0.004         man/fragstats_class_podlasie.Rd
#> 10  0.003 0.000 0.004    man/fragstats_landscape_landscape.Rd
#> 11  0.003 0.001 0.004     man/fragstats_landscape_podlasie.Rd
#> 12  0.003 0.000 0.004         man/fragstats_patch_podlasie.Rd
#> 13  0.004 0.000 0.004                        man/landscape.Rd
#> 14  0.003 0.000 0.004                 man/landscapemetrics.Rd
#> 15  0.003 0.001 0.004     man/fragstats_class_augusta_nlcd.Rd
#> 16  0.003 0.000 0.004 man/fragstats_landscape_augusta_nlcd.Rd
#> 17  0.003 0.000 0.004        man/fragstats_patch_landscape.Rd
#> 18  0.006 0.001 0.008                    man/calculate_lsm.Rd
#> 19  0.011 0.000 0.011                       man/window_lsm.Rd
#> 20  0.014 0.000 0.016                         man/list_lsm.Rd
#> 21  0.017 0.001 0.018                        man/lsm_l_iji.Rd
#> 22  0.016 0.001 0.018                        man/lsm_l_lsi.Rd
#> 23  0.019 0.000 0.020                     man/lsm_l_mutinf.Rd
#> 24  0.019 0.001 0.020                     man/lsm_l_contag.Rd
#> 25  0.020 0.000 0.020                        man/lsm_c_iji.Rd
#> 26  0.021 0.000 0.020                       man/lsm_p_area.Rd
#> 27  0.022 0.001 0.022                       man/lsm_c_mesh.Rd
#> 28  0.022 0.000 0.022                       man/lsm_c_nlsi.Rd
#> 29  0.023 0.000 0.022                    man/lsm_l_condent.Rd
#> 30  0.021 0.001 0.022                  man/lsm_l_relmutinf.Rd
#> 31  0.021 0.000 0.022                         man/lsm_l_te.Rd
#> 32  0.022 0.000 0.022                    man/lsm_l_area_sd.Rd
#> 33  0.022 0.000 0.022                        man/lsm_l_ent.Rd
#> 34  0.021 0.000 0.022                         man/lsm_l_np.Rd
#> 35  0.022 0.001 0.023                      man/lsm_c_pladj.Rd
#> 36  0.023 0.000 0.023                      man/lsm_c_pland.Rd
#> 37  0.023 0.000 0.023                        man/lsm_l_lpi.Rd
#> 38  0.023 0.000 0.023                      man/lsm_l_msidi.Rd
#> 39  0.024 0.000 0.024                      man/lsm_c_split.Rd
#> 40  0.024 0.000 0.024                        man/lsm_l_rpr.Rd
#> 41  0.023 0.001 0.025                 man/raster_to_points.Rd
#> 42  0.025 0.000 0.025                    man/lsm_l_area_cv.Rd
#> 43  0.025 0.000 0.026                       man/lsm_l_shei.Rd
#> 44  0.025 0.000 0.026                         man/lsm_c_np.Rd
#> 45  0.026 0.000 0.026                   man/lsm_l_cohesion.Rd
#> 46  0.026 0.000 0.026                    man/lsm_l_core_sd.Rd
#> 47  0.028 0.000 0.027                    man/lsm_l_frac_mn.Rd
#> 48  0.027 0.000 0.027                      man/lsm_l_pladj.Rd
#> 49  0.027 0.000 0.027                   man/lsm_l_dcore_sd.Rd
#> 50  0.027 0.000 0.027                   man/lsm_l_division.Rd
#> 51  0.027 0.000 0.027                    man/lsm_l_joinent.Rd
#> 52  0.027 0.000 0.027                      man/lsm_l_msiei.Rd
#> 53  0.026 0.001 0.027                    man/lsm_l_para_mn.Rd
#> 54  0.027 0.000 0.028                  man/lsm_l_circle_sd.Rd
#> 55  0.027 0.000 0.028                       man/lsm_l_mesh.Rd
#> 56  0.028 0.000 0.028                       man/lsm_l_sidi.Rd
#> 57  0.027 0.000 0.028                         man/lsm_c_te.Rd
#> 58  0.028 0.001 0.029                    man/lsm_l_para_sd.Rd
#> 59  0.030 0.000 0.029                    man/lsm_c_para_cv.Rd
#> 60  0.029 0.000 0.029                    man/lsm_c_para_sd.Rd
#> 61  0.028 0.000 0.029                    man/lsm_l_core_mn.Rd
#> 62  0.030 0.000 0.030                     man/lsm_p_circle.Rd
#> 63  0.029 0.000 0.030                       man/lsm_p_core.Rd
#> 64  0.029 0.001 0.030                      man/lsm_p_shape.Rd
#> 65  0.029 0.001 0.030                        man/lsm_c_lpi.Rd
#> 66  0.029 0.000 0.030                       man/lsm_c_ndca.Rd
#> 67  0.029 0.000 0.030                         man/lsm_l_pr.Rd
#> 68  0.030 0.000 0.030                      man/lsm_p_ncore.Rd
#> 69  0.030 0.000 0.031                        man/lsm_c_lsi.Rd
#> 70  0.031 0.000 0.031                    man/lsm_l_frac_cv.Rd
#> 71  0.029 0.002 0.031                       man/pad_raster.Rd
#> 72  0.032 0.000 0.032                   man/lsm_l_shape_cv.Rd
#> 73  0.033 0.000 0.032                       man/lsm_l_siei.Rd
#> 74  0.032 0.000 0.032                    man/lsm_c_area_cv.Rd
#> 75  0.031 0.000 0.032                    man/lsm_c_frac_mn.Rd
#> 76  0.031 0.001 0.032                    man/lsm_c_frac_sd.Rd
#> 77  0.032 0.000 0.032                   man/lsm_l_dcore_mn.Rd
#> 78  0.030 0.001 0.032                         man/lsm_l_pd.Rd
#> 79  0.030 0.000 0.033                man/landscape_as_list.Rd
#> 80  0.031 0.001 0.033                    man/lsm_c_core_cv.Rd
#> 81  0.033 0.000 0.033                     man/lsm_l_cai_cv.Rd
#> 82  0.032 0.000 0.033                      man/lsm_l_split.Rd
#> 83  0.035 0.000 0.034                         man/lsm_c_ai.Rd
#> 84  0.034 0.000 0.034                    man/lsm_c_frac_cv.Rd
#> 85  0.034 0.000 0.034                   man/lsm_c_shape_mn.Rd
#> 86  0.033 0.000 0.034                     man/lsm_l_cai_mn.Rd
#> 87  0.034 0.000 0.034                     man/lsm_l_pafrac.Rd
#> 88  0.033 0.000 0.034                         man/lsm_l_ed.Rd
#> 89  0.034 0.000 0.034                        man/proj_info.Rd
#> 90  0.029 0.006 0.035                 man/matrix_to_raster.Rd
#> 91  0.032 0.002 0.035                    man/lsm_l_area_mn.Rd
#> 92  0.034 0.000 0.035                    man/lsm_l_core_cv.Rd
#> 93  0.034 0.001 0.035                        man/lsm_p_enn.Rd
#> 94  0.036 0.000 0.036                         man/lsm_c_pd.Rd
#> 95  0.037 0.000 0.037                    man/lsm_c_para_mn.Rd
#> 96  0.037 0.000 0.037                         man/lsm_l_ai.Rd
#> 97  0.037 0.000 0.037                  man/lsm_l_circle_cv.Rd
#> 98  0.035 0.001 0.037                  man/lsm_l_circle_mn.Rd
#> 99  0.037 0.000 0.037                   man/lsm_l_dcore_cv.Rd
#> 100 0.036 0.000 0.037                    man/lsm_l_frac_sd.Rd
#> 101 0.036 0.000 0.037                  man/lsm_l_gyrate_mn.Rd
#> 102 0.037 0.000 0.037                       man/lsm_l_ndca.Rd
#> 103 0.035 0.001 0.037                    man/lsm_l_para_cv.Rd
#> 104 0.037 0.000 0.038                     man/lsm_l_enn_cv.Rd
#> 105 0.036 0.001 0.038                        man/lsm_l_tca.Rd
#> 106 0.039 0.000 0.039                   man/lsm_c_shape_sd.Rd
#> 107 0.038 0.001 0.039                     man/lsm_l_enn_mn.Rd
#> 108 0.039 0.000 0.039                   man/lsm_l_shape_sd.Rd
#> 109 0.038 0.000 0.039                       man/lsm_l_shdi.Rd
#> 110 0.040 0.000 0.040                   man/lsm_c_shape_cv.Rd
#> 111 0.039 0.000 0.040                  man/lsm_c_gyrate_sd.Rd
#> 112 0.040 0.000 0.040                     man/lsm_l_cai_sd.Rd
#> 113 0.037 0.000 0.040                      man/lsm_p_perim.Rd
#> 114 0.040 0.000 0.041                    man/lsm_c_core_mn.Rd
#> 115 0.041 0.000 0.041                       man/lsm_l_dcad.Rd
#> 116 0.039 0.001 0.041                        man/lsm_p_cai.Rd
#> 117 0.041 0.001 0.042                        man/lsm_c_tca.Rd
#> 118 0.041 0.000 0.042                     man/unpad_raster.Rd
#> 119 0.043 0.000 0.043                  man/lsm_c_gyrate_mn.Rd
#> 120 0.042 0.000 0.043                       man/lsm_p_frac.Rd
#> 121 0.041 0.001 0.043                       man/lsm_p_para.Rd
#> 122 0.043 0.001 0.044          man/lsm_abbreviations_names.Rd
#> 123 0.043 0.001 0.044                  man/lsm_l_gyrate_sd.Rd
#> 124 0.039 0.000 0.045                    man/lsm_c_area_sd.Rd
#> 125 0.045 0.000 0.045                         man/lsm_l_ta.Rd
#> 126 0.045 0.000 0.046                  man/get_adjacencies.Rd
#> 127 0.043 0.002 0.047                    man/lsm_c_core_sd.Rd
#> 128 0.046 0.000 0.048                   man/lsm_c_dcore_mn.Rd
#> 129 0.047 0.000 0.048                  man/lsm_l_gyrate_cv.Rd
#> 130 0.048 0.000 0.049                    man/lsm_c_area_mn.Rd
#> 131 0.048 0.001 0.049                   man/lsm_c_division.Rd
#> 132 0.050 0.000 0.050                  man/lsm_c_gyrate_cv.Rd
#> 133 0.049 0.000 0.051                     man/lsm_l_enn_sd.Rd
#> 134 0.051 0.000 0.052                     man/lsm_c_pafrac.Rd
#> 135 0.051 0.000 0.052                         man/lsm_c_ed.Rd
#> 136 0.050 0.000 0.054                         man/lsm_c_ca.Rd
#> 137 0.052 0.001 0.054                        man/lsm_l_prd.Rd
#> 138 0.054 0.000 0.056                   man/lsm_c_dcore_sd.Rd
#> 139 0.055 0.001 0.056                     man/lsm_c_enn_sd.Rd
#> 140 0.058 0.000 0.059                man/get_unique_values.Rd
#> 141 0.054 0.000 0.059                     man/lsm_p_gyrate.Rd
#> 142 0.059 0.000 0.060         man/get_circumscribingcircle.Rd
#> 143 0.059 0.001 0.061                     man/lsm_c_cai_cv.Rd
#> 144 0.061 0.000 0.062                  man/lsm_c_circle_mn.Rd
#> 145 0.057 0.000 0.063                     man/lsm_c_cai_sd.Rd
#> 146 0.061 0.001 0.063                     man/lsm_c_enn_mn.Rd
#> 147 0.061 0.001 0.063                  man/lsm_c_circle_sd.Rd
#> 148 0.063 0.000 0.065                     man/lsm_c_cpland.Rd
#> 149 0.061 0.000 0.065                   man/lsm_c_dcore_cv.Rd
#> 150 0.062 0.002 0.066                    man/get_centroids.Rd
#> 151 0.065 0.000 0.069                     man/lsm_c_cai_mn.Rd
#> 152 0.063 0.000 0.070                  man/lsm_c_circle_cv.Rd
#> 153 0.066 0.000 0.070                   man/lsm_c_cohesion.Rd
#> 154 0.069 0.000 0.070                     man/lsm_c_enn_cv.Rd
#> 155 0.062 0.002 0.071                   man/lsm_l_shape_mn.Rd
#> 156 0.062 0.001 0.079                     man/lsm_c_clumpy.Rd
#> 157 0.071 0.001 0.086                       man/lsm_c_dcad.Rd
#> 158 0.088 0.002 0.091                   man/get_boundaries.Rd
#> 159 0.118 0.000 0.121             man/get_nearestneighbour.Rd
#> 160 0.123 0.001 0.131                      man/get_patches.Rd
#> 161 0.135 0.007 0.144                        man/data_info.Rd
#> 162 0.147 0.000 0.148                   man/spatialize_lsm.Rd
#> 163 0.212 0.000 0.213                       man/sample_lsm.Rd
#> 164 0.226 0.002 0.230                     man/show_patches.Rd
#> 165 0.432 0.001 0.302                         man/show_lsm.Rd
#> 166 0.337 0.000 0.339                     man/augusta_nlcd.Rd
#> 167 0.363 0.000 0.366                  man/lsm_l_contig_mn.Rd
#> 168 0.373 0.003 0.380                     man/lsm_p_contig.Rd
#> 169 0.378 0.000 0.381                  man/lsm_l_contig_cv.Rd
#> 170 0.428 0.000 0.431                  man/lsm_l_contig_sd.Rd
#> 171 0.406 0.022 0.442                  man/check_landscape.Rd
#> 172 0.453 0.001 0.483                  man/lsm_c_contig_sd.Rd
#> 173 0.492 0.007 0.522                 man/construct_buffer.Rd
#> 174 0.516 0.001 0.555                  man/lsm_c_contig_cv.Rd
#> 175 0.527 0.000 0.559                  man/lsm_c_contig_mn.Rd
#> 176 0.921 0.000 0.927                       man/show_cores.Rd
#> 177 0.914 0.001 0.957                      man/extract_lsm.Rd
#> 178 2.477 0.031 2.524                 man/show_correlation.Rd
#> 179 7.211 0.062 7.468            man/calculate_correlation.Rd